【发布时间】:2010-09-13 22:44:47
【问题描述】:
在一个文本文件中,有一个字符串“我不喜欢这个”。
但是,当我将它读入字符串时,它变成了“我不喜欢这样\xe2\x80\x98t”。我知道 \u2018 是“'”的 unicode 表示。我用
f1 = open (file1, "r")
text = f1.read()
执行读取的命令。
现在,是否有可能以这样的方式读取字符串,当它被读入字符串时,它是“我不喜欢这个”,而不是“我不喜欢这样\xe2\x80\x98t这个”?
第二次编辑:我看到有人使用映射来解决这个问题,但实际上,没有内置的转换可以进行这种 ANSI 到 unicode(反之亦然)的转换吗?
【问题讨论】:
-
一些cmets:我看到有人使用映射来解决这个问题,但实际上,没有内置的转换可以进行这种ANSI到unicode(反之亦然)的转换吗?谢谢!
-
没有,因为有数十万个 Unicode 代码点。你将如何决定哪些应该映射到哪些 ASCII 字符?
-
顺便说一句,你的文本文件坏了! U+2018 是“左单引号”,而不是撇号(U+0027 最常见)。
-
约翰,您的评论是错误的,至少在一般意义上是错误的。 iconv 库可用于将 unicode 字符音译为 ascii(甚至取决于语言环境。$ python -c 'print u"\u2018".encode("utf-8")' | iconv -t 'ascii//translit' | xxd 0000000: 270a
-
问题是,您需要将 UNICODE 转换为 ASCII(而不是相反)。
标签: python unicode encoding ascii