오늘 일을하고 있었고 뭔가 "재미있어 보였습니다"라는 문제를 발견했습니다. 일부 문자열 데이터를 utf-8로 해석하고 인코딩 된 양식을 확인했습니다. 데이터는 ldap (특히 Active Directory)에서 python-ldap을 통해 전송되었습니다. 거기에 놀라움이 없습니다.파이썬 UTF-16 WAVY DASH 인코딩 질문/문제
그래서 '\ xe3 \ x80 \ xb0'바이트 시퀀스가 발생했습니다.이 시퀀스는 utf-8로 디코딩 될 때 유니 코드 코드 포인트 3030 (wavy dash)입니다. 나는 utf-16에서 문자열 데이터를 필요로하므로, 자연스럽게 .encode ('utf-16')를 통해 변환했습니다. IronPython의이 팬 중 하나없는 것 같다
D:\> python
Python 2.6.4 (r264:75708, Oct 26 2009, 08:23:19) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> u"\u3030"
u'\u3030'
>>> u"\u3030".encode("utf-8")
'\xe3\x80\xb0'
>>> u"\u3030".encode("utf-16-le")
'00'
>>> u"\u3030".encode("utf-16-be")
'00'
>>> '\xe3\x80\xb0'.decode('utf-8')
u'\u3030'
>>> '\xe3\x80\xb0'.decode('utf-8').encode('utf-16')
'\xff\xfe00'
>>> '\xe3\x80\xb0'.decode('utf-8').encode('utf-16-le').decode('utf-8')
u'00'
: 불행하게도, 그것은 파이썬은이 문자를 좋아하지 않는 것 같다
D:\ipy
IronPython 2.6 Beta 2 (2.6.0.20) on .NET 2.0.50727.3053
Type "help", "copyright", "credits" or "license" for more information.
>>> u"\u3030"
u'\u3030'
>>> u"\u3030".encode('utf-8')
u'\xe3\x80\xb0'
>>> u"\u3030".encode('utf-16-le')
'00'
누군가가 말해 줄 수 있다면 무엇을, 정확히, 여기에 가고, 대단히 감사하겠습니다.
좋은 질문 ... 예상되는 캐릭터의 이미지에 대한 링크가 좋은 터치입니다. –
UTF-16으로 인코딩 한 다음 UTF-8을 사용하여 디코딩하면 현명한 결과가 나오지 않을 것입니다. 기껏해야 - 입력이 ASCII 인코딩 가능하다면 두 번째 문자 하나마다 합리적인 문자를 얻습니다. –
네, 그 마지막 줄은 실수로 나를 혼란스럽게 만들었습니다. 감사. – NoName