Netscape LDAP에서는 한글 등 2Byte문자를 입력할 경우에는 유니코드로 변환해서 넣을것을 권장하고 있습니다.
(사실 한글은 그냥 넣어도 되긴 됩니다)
Netscape LDAP Java API를 이용하시면, 한글을 그냥 넣으면 이 API내부에서 알아서 유니코드로 변환해서 넣어줍니다.
(네스케이프 콘솔도 자바로 되어 있으니깐, 콘솔에서 한글을 그냥 입력해도 내부적으로 유니코드로 변환되어서 들어가는 겁니다)
그런데, LDAP C SDK를 사용하시셔 한글을 그냥 넣으시면, 이때는 유니코드로 변환이 되지 않고 그냥 입력이 됩니다.(유니코드로 넣으실 경우에는, LDAP에 Insert하기 전에 유니코드로 변환 필요)
예를 들어 어떤 자료는 C API로 그냥 한글을 넣고, 어떤 자료는 콘솔에서 한글을 넣었다면, 같은 한글이지만 내부적으로는 다른 형태로 저장되어 있을 것이고, 자료을 읽어 올때도 다르게 읽어오게 되겠죠.( 즉, 자바 콘솔에서는 C API로 넣은 한글은 깨져서 나오고, 자바콘솔에서 넣은 한글은 C API에서 보면 깨져서 보일것입니다.)
즉, 한글 입력시에는 모든 한글을 유니코드로 넣을지 한글로 그냥 넣을지 먼저 결정하신 후에 그 기준에 따라 일관되게 작업을 하셔야 합니다.
그럼, 질문하신 Import/Export시 한글 처리에 대해 말씀드리겠습니다.
물론, 이경우도 2가지 다 가능합니다.
(하지만, 2가지 모두 그냥을 못넣을 꺼구, 간단한 변환 프로그램을 짜셔서 그냥 한글로 작성한 LDIF파일을 변환하신 후에 Import를 해야 합니다.)
첫번째는 그냥 한글로 Import하는 것입니다.
이경우 한글을 Binary로 인식합니다.
즉 Binary을 입력할때와 마찬가지로 Base64로 인코딩을 하고 Attibute명 뒤에 콜론을 2개(::) 붙여서 값을 넣어줘야 합니다.
아래 예에서 보면, "ou:: 67CY64+E7LK0" 같은 형태가 됩니다.
( "dn: ou=반도체,o=sec" 와 같이 LDIF에 한글이 보이면 안됩니다
-> dn:: Base64인코딩된것 형태가 되어야 합니다. )
---> 이렇게 입력하면 당연히 네스케이프 콘솔에서는 한글 조회가 안됩니다만, C API를 이용하면 한글 조회는 되는거죠.
두번째는 유니코드로 변환후 위와 같이 Base64로 인코딩한후 Import하는 겁니다.
즉, 프로그램을 짜셔서 해당 LDIF를 유니코드로 변환하고, Base64로 인코딩 한후, Attribute명뒤에 ::를 붙인후 새로운 LDIF를 만들어 주고, 이 변환된 LDIF를 올리는 겁니다.
위의 두경우 모두, DN에 한글이 들어가는 건 가능하면 피하시는게 좋습니다.
그럼...
>>홍민정 님께서 쓰시길<<
:: 문제는 한글이였더군요.
:: 한글을 모두 영문으로 바꾸니까 입력이 되더라구요.
:: 그런데 LDIF가 아니라 네스케이프 콘솔상에서는 한글이 입력이 되요.
:: 입력된 한글을 export해서 보니깐 한글부분은 유니코드로 변환되어있었습니다.
:: 대량의 자료를 콘솔로 일일이 등록하는건 거의 불가능하고 그렇다고 자료를 모두 영문으로 작성할 수
:: 도 없고...
:: 어찌해야할지.....
:: 아래의 것은 제가 export한 것입니다.
:: 보시고 방법을 알려주세용.....
::
:: dn: o=sec
:: objectclass: top
:: objectclass: organization
:: o: sec
:: aci: (targetattr = "*")(version 3.0; acl "Allow self entry modification"; allo
:: w (write)userdn = "ldap:///self";)
:: aci: (targetattr != "userPassword") (version 3.0; acl "Anonymous access"; allo
:: w (read, search, compare)userdn = "ldap:///anyone";)
:: aci: (targetattr = "*")(version 3.0; acl "Configuration Adminstrator"; allow (
:: all) userdn = "ldap:///uid=admin, ou=Administrators, ou=TopologyManagement,
:: o=NetscapeRoot";)
::
:: dn: ou=Directory Administrators, o=sec
:: ou: Directory Administrators
:: description: Entities with administrative access to this directory server
:: objectclass: top
:: objectclass: organizationalunit
::
:: dn: ou=a, o=sec
:: ou: a
:: objectclass: top
:: objectclass: organizationalunit
::
::
::
:: dn: ou=반도체,o=sec
:: ou:: 67CY64+E7LK0
:: objectclass: top
:: objectclass: organizationalunit
::
::
::
::
:: >>홍민정 님께서 쓰시길<<
::
:: :: LDIF파일을 만들어서 import하려고 하는데 에러가 납니다.
:: :: 하나도 import되지않고 reject도 되지않네요...
:: :: 에러파일을 보려고 하는데 reject조차 되지 않아서 인지 에러파일도 생성되지 않아요.
:: :: 지난번에 이런 경우가 있었는데 그 때는 로그온을 directory manager로 하니 않아서 권한이 없어서
:: imp
:: :: ort가 되지 않았던 것이였거든요.
:: :: 이번에는 로그온도 directory manager로 했는데도 import는 커녕 reject도 되지 않네요.
|