外观相同但字节表示形式不同的字符串
Identical looking string but different bytes representation
上面的字符串是我打的,下面的字符串是从数据库中提取的。
bytes('TOYOTA', 'utf-8')
>> b'TOYOTA'
bytes('ΤΟΥΟΤΑ', 'utf-8')
>> b'\xce\xa4\xce\x9f\xce\xa5\xce\x9f\xce\xa4\xce\x91'
当我想检查它是否存在时,这会导致不良结果
'TOYOTA' == 'ΤΟΥΟΤΑ'
>> False
知道如何“修复”不正确的字符串吗?
这些似乎是希腊大写字母:
>>> import unicodedata
>>> s = 'ΤΟΥΟΤΑ'
>>> for c in s:
... print(unicodedata.name(c))
...
GREEK CAPITAL LETTER TAU
GREEK CAPITAL LETTER OMICRON
GREEK CAPITAL LETTER UPSILON
GREEK CAPITAL LETTER OMICRON
GREEK CAPITAL LETTER TAU
GREEK CAPITAL LETTER ALPHA
您可以尝试使用可用的 third-party 库之一来音译拉丁字母表,例如:
- https://pypi.org/project/polyglot/
- https://pypi.org/project/transliterate/
- https://pypi.org/project/Unidecode/
这是一个类似的问题:How can I create a string in english letters from another language word?
上面的字符串是我打的,下面的字符串是从数据库中提取的。
bytes('TOYOTA', 'utf-8')
>> b'TOYOTA'
bytes('ΤΟΥΟΤΑ', 'utf-8')
>> b'\xce\xa4\xce\x9f\xce\xa5\xce\x9f\xce\xa4\xce\x91'
当我想检查它是否存在时,这会导致不良结果
'TOYOTA' == 'ΤΟΥΟΤΑ'
>> False
知道如何“修复”不正确的字符串吗?
这些似乎是希腊大写字母:
>>> import unicodedata
>>> s = 'ΤΟΥΟΤΑ'
>>> for c in s:
... print(unicodedata.name(c))
...
GREEK CAPITAL LETTER TAU
GREEK CAPITAL LETTER OMICRON
GREEK CAPITAL LETTER UPSILON
GREEK CAPITAL LETTER OMICRON
GREEK CAPITAL LETTER TAU
GREEK CAPITAL LETTER ALPHA
您可以尝试使用可用的 third-party 库之一来音译拉丁字母表,例如:
- https://pypi.org/project/polyglot/
- https://pypi.org/project/transliterate/
- https://pypi.org/project/Unidecode/
这是一个类似的问题:How can I create a string in english letters from another language word?