【发布时间】:2021-12-06 20:04:14
【问题描述】:
我有一个变量,其中 Unicode 字符是用字符串输入的
print(x)
# output -> '\u062f\u0631 \u0627\u0628\u0644'
print(type(x))
# output -> <class 'str'>
如何在 utf8 中转换 x ?
【问题讨论】:
标签: python string unicode utf-8 python-unicode
我有一个变量,其中 Unicode 字符是用字符串输入的
print(x)
# output -> '\u062f\u0631 \u0627\u0628\u0644'
print(type(x))
# output -> <class 'str'>
如何在 utf8 中转换 x ?
【问题讨论】:
标签: python string unicode utf-8 python-unicode
将.encode('raw_unicode_escape').decode('unicode_escape') 用于加倍Reverse Solidi,参见Python Specific Encodings
x= '\\u062f\\u0631 \\u0627\\u0628\\u0644'
print(x, '->', x.encode('raw_unicode_escape').decode('unicode_escape'))
\u062f\u0631 \u0627\u0628\u0644 -> در ابل
【讨论】:
x.encode('ascii').decode('unicode_escape') 就足够了。原始字符串中没有什么可以转义的。
x 包含非 ascii 字符,您的解决方案将失败,例如x= '"در ابل" is the same as "\\u062f\\u0631 \\u0627\\u0628\\u0644"'。所以我更安全……
U+D800 到 U+DFFF。我在您或我的minimal reproducible example 中看不到任何此类代码点。