不知道整个 unicode 字符 python

Posted

技术标签:

【中文标题】不知道整个 unicode 字符 python【英文标题】:Not knowing a whole unicode character python 【发布时间】:2021-12-06 20:04:14 【问题描述】:

我有一个变量,其中 Unicode 字符是用字符串输入的

print(x)
# output -> '\u062f\u0631 \u0627\u0628\u0644'

print(type(x))
# output -> <class 'str'>

如何在 utf8 中转换 x ?

【问题讨论】:

【参考方案1】:

.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') 就足够了。原始字符串中没有什么可以转义的。 @MarkTolonen 你是对的(对于这个特定的字符串)。但是,如果 x 包含非 ascii 字符,您的解决方案将失败,例如x= '"در ابل" is the same as "\\u062f\\u0631 \\u0627\\u0628\\u0644"'。所以我更安全…… UnicodeEncodeError: 'utf-8' codec can't encode characters in position 1-2: surrogates not allowed .................. 不是工作:( @mehdinora 代理是 Unicode 范围从 U+D800U+DFFF。我在您或我的minimal reproducible example 中看不到任何此类代码点。

以上是关于不知道整个 unicode 字符 python的主要内容,如果未能解决你的问题,请参考以下文章

在 Windows 中,如何输入 Unicode 基本多语言平面之外的字符?

Unicode / HTML 中是不是有“不可见”的连字符?

系统使用(Python2不支持的) Unicode UTF-8 字符导致 ArcGIS 运行崩毁

C ++ 11字符串开头的不区分大小写的比较(unicode)

Wpf中显示Unicode字符

编码/解码有啥区别?