【问题标题】:How to decode a text with unicodes like \u00e7 in python?如何在 python 中使用 u00e7 等 unicode 解码文本?
【发布时间】:2014-03-05 22:57:37
【问题描述】:

您好,我通过库接收文本,当我打印收到的文本时,我看到一些非英文字符为“\u00e7”,而必须是“ç”。我想我需要以某种方式对文本进行编码和重新解码,但我对 python 很陌生,如果它是正确的方法,我不会这样做。可以请教一下我的方法吗?

【问题讨论】:

  • 您使用的是哪个版本的 Python?
  • Python 2.7.5 我认为它是最新最好的。
  • 最新的是python 3.3.3。这确实很重要,因为 unicode 字符串的处理从 2.x 更改为 3.x。
  • 你能以你看到的形式向我们展示你得到的文本吗?

标签: python python-2.7 unicode utf-8 character-encoding


【解决方案1】:

使用unicode_escape encoding解码字符串:

>>> s = r'\u00e7'
>>> print s
\u00e7
>>> print s.decode('unicode-escape')
ç
>>> 

如果sys.stdout.encodingascii,打印将引发UnicodeEncodeError;在这种情况下,明确编码:

>>> print s.decode('unicode-escape').encode('utf-8')
ç

【讨论】:

  • 这可能是正确的答案,但根据 OP 迄今为止提供的信息量,无法判断。我怀疑这是否正确;我的猜测是 OP 已经有 unicode 对象,或者他需要将其解码为 JSON。没有多少来源以 Python unicode 字符串文字的形式提供数据,这是 unicode-escape 处理的。
  • 非常感谢,这可能是正确的答案,但我仍然缺少一些东西。我有这个错误不是在解码线上,而是在打印线上。 UnicodeEncodeError: 'ascii' codec can't encode character u'\u0131' in position 135: ordinal not in range(128)
  • @smart-dev.org:听起来你已经有了一个 Unicode 字符串。这是您尝试重新解码 Unicode 字符串并且 Unicode 字符串包含非 ASCII 字符时收到的错误消息。
  • @smart-dev.org,试试s.decode('unicode-escape').encode('utf-8')
  • @smart-dev.org,顺便说一句,字符串来自哪里?你用什么库?
猜你喜欢
  • 1970-01-01
  • 2020-03-30
  • 2014-03-21
  • 2011-04-21
  • 2021-12-13
  • 2014-11-14
  • 1970-01-01
  • 2018-09-21
  • 2019-07-26
相关资源
最近更新 更多