【问题标题】:How do I translate unicode(s, "utf-8") to work in both Python 2 and Python 3?如何翻译 unicode(s, "utf-8") 在 Python 2 和 Python 3 中工作?
【发布时间】:2019-04-29 14:52:47
【问题描述】:

我如何翻译 unicode(s, "utf-8") 以同时在 Python 2 和 Python 3 中工作?

unicode() 在 Python 3 中被移除,因为所有 str 都是 Unicode,但 str() 不像 那样采用第二个参数>unicode() 这样做,它不是一个有效的替代品。

我试过了:

>>> for s in ("Luesai", u"Lüsai"):
...     print(s)
...     a = unicode(s, "utf-8")
...     print(a)
...     b = unicode(s).encode("utf-8")
...     print(b)
...     print(a == b)
...
Luesai
Luesai
Luesai
True
Lüsai
TypeError: decoding Unicode is not supported

【问题讨论】:

  • 您的测试程序基于许多在 Python 3 中不成立的假设。即使您得到满意的答案,也需要重做。

标签: python python-3.x unicode porting


【解决方案1】:

如果你有一个字节串,在 2 和 3 中翻译它的方法是使用decode:

a = s.decode("utf-8")

【讨论】:

  • 这个答案假设输入是一个字节字符串,而我们的测试数据中的 u"Lüsai" 不是这种情况。
  • @cclauss 那是因为您的测试数据不正确。如果您的数据已经是 Unicode 字符串,则无需转换它;你的问题格式不正确。
猜你喜欢
  • 2015-04-12
  • 1970-01-01
  • 2011-10-01
  • 2015-09-17
  • 2019-07-20
  • 2017-05-23
  • 2016-05-03
  • 1970-01-01
  • 2018-01-14
相关资源
最近更新 更多