在 Python 中使用 unicode 字符时的不同编码
Different encoding when using unicode character in Python
当遇到组合 unicode 而不是内置 unicode 时,我在 Python 中遇到问题。这是重现代码:
# encoding=utf8
a = ["Địa"]
b = ["Địa"]
print(a) # ['\xc4\x90i\xcc\xa3a']
print(b) # ['\xc4\x90\xe1\xbb\x8ba']
print("Địa" in a) # False
print("Địa" in b) # True
如何convert/normalize将它们放入同一个编码器?
您可以使用 unicodedata.normalize()
:
# encoding=utf8
import unicodedata
a = ["Địa"]
b = ["Địa"]
print("Địa" in [unicodedata.normalize('NFC', i) for i in a])
print("Địa" in [unicodedata.normalize('NFC', i) for i in b])
这输出:
True
True
当遇到组合 unicode 而不是内置 unicode 时,我在 Python 中遇到问题。这是重现代码:
# encoding=utf8
a = ["Địa"]
b = ["Địa"]
print(a) # ['\xc4\x90i\xcc\xa3a']
print(b) # ['\xc4\x90\xe1\xbb\x8ba']
print("Địa" in a) # False
print("Địa" in b) # True
如何convert/normalize将它们放入同一个编码器?
您可以使用 unicodedata.normalize()
:
# encoding=utf8
import unicodedata
a = ["Địa"]
b = ["Địa"]
print("Địa" in [unicodedata.normalize('NFC', i) for i in a])
print("Địa" in [unicodedata.normalize('NFC', i) for i in b])
这输出:
True
True