【问题标题】:Python: How to print with UTF-8 characters?Python:如何使用 UTF-8 字符进行打印?
【发布时间】:2015-01-05 17:33:15
【问题描述】:

我已经尝试了几个小时来解决 Python 2.7.6 中的这个 UTF-8 问题。

我有一个带有 UTF-8 字符的字符串列表,如下所示:

findings=['Quimica Geral e Tecnol\xf3gica I', 'Quimica Geral e Tecnol\xf3gica II', '\xc1lgebra Linear']

我正在尝试打印字符串:

for finding in findings:
      print finding

输出是:

Quimica Geral e Tecnolgica I
Quimica Geral e Tecnolgica II
lgebra Linear

我也试过这个:

for finding in findings:
      print( "%s"%(finding))

我得到了相同的输出。

如果我尝试保存在文件中:

file = open("teste.txt", "w")
for finding in findings:
  file.write("%s\n" % finding)
file.close()  

它有效,输出是(请注意拉丁字符 - 重音):

Quimica Geral e Tecnológica I
Quimica Geral e Tecnológica II
Álgebra Linear

我做错了什么?

【问题讨论】:

  • 如果你没有从 Python 中得到任何错误,很可能问题出在你的控制台/终端上。你是如何运行 Python 的,在什么上? (cmd 在 Windows 上运行?哪个 Windows?什么代码页?还是 Linux?哪个 Linux,如何连接?GUI 或普通控制台?什么语言环境?或 OSX?终端或某种 GUI?)
  • @tripleee 我在 Ubuntu 14.04 上运行并使用 Spyder。你是对的(我没有想过这个),当我在终端运行时,我会听到类似“Quimica Geral e Tecnol?gica I”或“?lgebra Linear?”之类的东西。所以这意味着问题出在GUI上?我的代码正确吗?

标签: python python-2.7 printing utf-8


【解决方案1】:

您需要使用 unicode 函数将字符串转换为 unicode 并使用 unicode-escape(在 Python 源代码中生成适合作为 Unicode 文字的字符串)作为编码:

>>> for i in findings :
...    print unicode(i,'unicode-escape')
... 
 Quimica Geral e Tecnológica I
 Quimica Geral e Tecnológica II
 Álgebra Linear

添加:I/O 系统构建为一系列层,当您打开文件进行写入时,使用io.TextIOWrapper 层,这是一个自动编码和解码 Unicode 的文本处理层。

【讨论】:

  • @DanielTheRocketMan I/O 系统构建为一系列层,您打开文件以编写它使用io.TextIOWrapper 层,这是一个文本处理层,可自动编码和解码 Unicode。
猜你喜欢
  • 1970-01-01
  • 2011-01-08
  • 2016-12-03
  • 1970-01-01
  • 1970-01-01
  • 2015-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多