【问题标题】:Python Unicode, have unicode number in normal string, want to print unicodePython Unicode,在普通字符串中有 unicode 数字,想要打印 unicode
【发布时间】:2011-11-05 15:58:57
【问题描述】:

我在 Windows 7 上使用 IDLE。当我运行以下代码时

uni = u"\u4E0D"
binary = uni.encode("utf-8")
print binary

它正确打印数字 4E0D 的 unicode 字符。但在这里我必须手动硬编码 unicode 号码。假设我有一个普通的字符串格式变量:

s="4E0D"

如何将其转换为 unicode 字符?即我想做类似下面的伪代码

s="4E0D"
uni=u"\u"+s

谢谢!

【问题讨论】:

  • 为什么要手动编码一些东西以发送到二进制流,而不是简单地设置流编码一劳永逸? Manually.encode("utf-8") call.encode("utf-8") the.encode("utf-8") encode.encode("utf-8") method.encode("utf-8") every.encode("utf-8") time.encode("utf-8") is.encode("utf-8") clear.encode("utf-8") and.encode("utf-8") pron.encode("utf-8") to.encode("utf-8") error.encode("utf-8").

标签: python unicode


【解决方案1】:
s = '4e0d'
c = unichr(int(s, 16))

【讨论】:

  • 嗯但是如果我想在我的字符串中有更多的字母怎么办?例如我想写 u"a\u4E0D" 总字符串不再是整数,是否有任何与字符串等效的 unichar?
  • @JonathanLindgren:u'a' + cunichr 总是采用一个代码点并返回一个字符。
  • 对不起,我可能不清楚,我希望能够打印与 u"a\u4E0D" 打印的内容相同的内容,但我希望将字符串保存在字符串变量中。即我有: s="a\u4E0D" 并想打印 s 其中 \u4E0D 转换为它的 unicode 字符
  • @JonathanLindgren:您需要解析它并在每个 Unicode 转义上分别运行 unichr
  • @JonathanLindgren:或者在前面加上u前缀,然后使用ast.literal_eval
【解决方案2】:

不是最快的方法,但至少可读:

s = "4E0D"
orig = "\u" + s
uni = orig.decode('cp1252')

【讨论】:

  • 这是行不通的,文字转义是一种语法特性,你不能在旅途中构造它们,至少在不求助于eval的情况下不能。此外,从cp1252 解码不会做任何有趣的事情。
猜你喜欢
  • 2014-08-23
  • 1970-01-01
  • 2022-01-25
  • 1970-01-01
  • 2013-11-23
  • 1970-01-01
  • 1970-01-01
  • 2018-06-22
相关资源
最近更新 更多