2017-12-21 6 views
0

utf-8에서 독일어 알파벳 "ö"은 두 형태로 하나는 b '\ xc3 \ xb6'이고 다른 하나는 b'o \ xcc \ x88 'utf-8 독일어 Umlaut는 두 가지 다른 바이트 코드 표현을 가지고 있습니다.

다음 코드는이 "O"으로 단어를 검색하는 문제가 발생할 수 파이썬 3.6.3

In [1]: b'\xc3\xb6'.decode('utf-8') 
Out[1]: 'ö' 

In [2]: b'o\xcc\x88'.decode('utf-8') 
Out[2]: 'ö' 

입니다. 어떻게하면 두 번째 양식을 첫 번째 양식으로 변환 할 수 있습니까?

답변

3

Unicode normalization을 통해 실행하십시오. 양식으로 NFC을 사용하십시오..

+0

'0xC3 0xB6'은 유니 코드 코드 포인트'U + 00F6 LATIN SMALL LETTER O WITH DIAERESIS'의 반면에 '0x6F 0xCC 0x88'은 유니 코드 코드 포인트의 UTF-8 표현 인 반면 U + 006F LATIN SMALL LETTER O'와'U + 0308 Combination DIAERESIS'를 합친 것입니다. NFC로 정규화하면'U + 006F U + 0308'이'U + 00F6'으로 변환되는 반면, NFD로 정규화하면 반대가됩니다. –