Python 相同的字符、不同的长度和字节
从韩国网站下载文件时,文件名通常会被错误编码/解码,最终会变得一团糟。我发现通过使用“iso-8859-1”编码和使用“euc kr”解码,我可以解决这个问题。然而,我有一个新的问题,相同的角色实际上是不同的。查看下面的Python shell文件:Python 相同的字符、不同的长度和字节,python,unicode,character-encoding,Python,Unicode,Character Encoding,从韩国网站下载文件时,文件名通常会被错误编码/解码,最终会变得一团糟。我发现通过使用“iso-8859-1”编码和使用“euc kr”解码,我可以解决这个问题。然而,我有一个新的问题,相同的角色实际上是不同的。查看下面的Python shell文件: >>> first_string = 'â' >>> second_string = 'â' >>> len(first_string) 1 >>> len(second_s
>>> first_string = 'â'
>>> second_string = 'â'
>>> len(first_string)
1
>>> len(second_string)
2
>>> list(first_string)
['â']
>>> list(second_string)
['a', '̂']
>>>
可以使用“iso-8859-1”对第一个字符串进行编码。后者并非如此。因此,问题是:
第二个\u字符串
转换为第一个\u字符串
)ga
以获取有关该字符的信息
第一个是:
<â> 226, Hex 00e2, Octal 342
226,十六进制00e2,八进制342
第二点:
<a> 97, Hex 61, Octal 141 < ̂> 770, Hex 0302, Octal 1402
,第二个是a,后面跟着a
U'a\u0302'
创建的组合扬抑重音(U+0302)。它由两个字符组成:a和扬抑符
from unicodedata import normalize
s = u'a\u0302'
print s, len(s), len(normalize("NFC", s))
will output
–2 1
这些字符不一样:第一个字符有一个波浪号。我使用Python和“NFC”作为表单进行规范化,编码进行得很顺利13秒前的Jake Hyun很酷。我将把它添加到答案中。