【问题标题】:Not knowing a whole unicode character python不知道整个 unicode 字符 python
【发布时间】: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


    【解决方案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 中看不到任何此类代码点。
    猜你喜欢
    • 2018-05-16
    • 2017-10-05
    • 2019-06-03
    • 2020-11-21
    • 2017-11-19
    • 2011-11-12
    • 2021-11-03
    • 2013-04-18
    • 2015-04-10
    相关资源
    最近更新 更多