【问题标题】:How to convert unicode string into normal text in python如何在python中将unicode字符串转换为普通文本
【发布时间】:2018-06-08 22:17:12
【问题描述】:

假设我有一个 Unicode 字符串(不是真正的 unicode,而是看起来像 unicode 的字符串)。我想得到它的 utf-8 变体。我怎样才能在 Python 中做到这一点? 例如,如果我有这样的字符串:

title = "\\u10d8\\u10e1\\u10e0\\u10d0\\u10d4\\u10da\\u10d8 == \\u10d8\\u10d4\\u10e0\\u10e3\\u10e1\\u10d0\\u10da\\u10d8\\u10db\\u10d8"

我怎样才能得到它的 utf-8 变体(格鲁吉亚符号):

ისრაელი == იერუსალიმი

简单地说,我想有这样的代码:

title = "\\u10d8\\u10e1\\u10e0\\u10d0\\u10d4\\u10da\\u10d8 == \\u10d8\\u10d4\\u10e0\\u10e3\\u10e1\\u10d0\\u10da\\u10d8\\u10db\\u10d8"
utfTitle = title.TurnToUTF()
print(utfTitle)

我希望这段代码有输出:

ისრაელი == იერუსალიმი

【问题讨论】:

标签: python string unicode encoding utf-8


【解决方案1】:

您可以使用unicode-escape 编解码器摆脱双反斜杠并有效地使用字符串。

假设titlestr,您需要先对字符串进行编码,然后再解码回unicode(str)。

>>> t = title.encode('utf-8').decode('unicode-escape')
>>> t
'ისრაელი == იერუსალიმი'

如果titlebytes 实例,您可以直接解码:

>>> t = title.decode('unicode-escape')
>>> t
'ისრაელი == იერუსალიმი'

【讨论】:

    【解决方案2】:

    来,你去吧。只需使用decode 方法并应用unicode_escape

    对于 Python 2.x

    title = "\\u10d8\\u10e1\\u10e0\\u10d0\\u10d4\\u10da\\u10d8 == \\u10d8\\u10d4\\u10e0\\u10e3\\u10e1\\u10d0\\u10da\\u10d8\\u10db\\u10d8"
    utfTitle = title.decode('unicode_escape')
    print(utfTitle)
    
    #output :ისრაელი == იერუსალიმი
    

    对于 python 3.x

    title = "\\u10d8\\u10e1\\u10e0\\u10d0\\u10d4\\u10da\\u10d8 == \\u10d8\\u10d4\\u10e0\\u10e3\\u10e1\\u10d0\\u10da\\u10d8\\u10db\\u10d8"
    print(title.encode('ascii').decode('unicode-escape'))
    

    【讨论】:

      【解决方案3】:

      假设 unicode 为 str 类型并使用 decode 和 unicode-escape 进行转换 方法

      title="\\u10d8\\u10e1\\u10e0\\u10d0\\u10d4\\u10da\\u10d8 == \\u10d8\\u10d4\\u10e0\\u10e3\\u10e1\\u10d0\\u10da\\u10d8\\u10db\\u10d8"
      
      res1 = title.encode('utf-8')
      
      res2 = res1.decode('unicode-escape')
      
      print(res2)
      

      【讨论】:

      • UnicodeEncodeError: 'cp932' codec can't encode character '\u10d8' in position 0: 非法多字节序列
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-21
      • 2016-06-18
      • 2016-08-14
      • 2014-12-07
      • 1970-01-01
      • 2021-11-27
      • 1970-01-01
      相关资源
      最近更新 更多