【问题标题】:Character encoding Python 3字符编码 Python 3
【发布时间】:2015-01-20 13:48:59
【问题描述】:

我一直在尝试在 Python 3 中打印 Unicode 字符,但它不起作用,我一直在 stackoverflow 上寻找解决方案,但没有任何效果。我有这样的东西。

print('This is a Unicode character: Ⱥ')

但我收到此错误消息:

我知道 Python 3 使用 UTF-8 作为默认编码,但我不知道我在这里做错了什么。

【问题讨论】:

  • @vaultah 不,你可以看到那里写着“Python34”
  • 您尝试打印的控制台无法处理字符Ⱥ,因为它使用了cp850编码。

标签: python unicode encoding character-encoding


【解决方案1】:

要正确打印 Unicode 字符,您需要这些东西:

  1. Python 必须知道源编码才能理解源代码中的非 ASCII 字符。 Python 3 假定为 UTF-8,除非文件顶部有特殊注释,例如 #coding: cp850。请注意,源编码和终端编码不必相同,源编码使用 UTF-8 即可,只要源文件实际上 保存为 UTF- 8.

  2. 控制台的编码必须支持 Unicode 字符。

  3. 控制台字体必须支持 Unicode 字符。
  4. 使用 Unicode 字符串。在 Python 3 中,'string' 是一个 Unicode 字符串。 b'string' 是一个字节串。

由于您的错误消息表明控制台正在使用Code page 850,因此如果您尝试打印该代码页不支持的任何字符,您将获得UnicodeEncodeError

试试这个。这些是合法的cp850 字符:

print('╔═╦═╗')
print('║ ║ ║')
print('╠═╬═╣')
print('║ ║ ║')
print('╚═╩═╝')

这应该适用于任何支持画线字符的控制台/IDE 上的 Python 3。美国 Windows 控制台使用cp437,欧洲 Windows 经常使用cp850,但两者都定义了字符并且控制台字体支持它们。

【讨论】:

  • 感谢您的帮助。我意识到这实际上是 cmd 代码页编码的问题,所以,我只是使用 CHCP 命令和 UTF-8 代码“65001”更改它,它可以工作,但是当我再次关闭并打开 cmd 时,它不再处于活动状态,并且我不知道如何永久保存它。
  • 那个代码页在 Windows 上是错误的。最好使用支持 UTF8 的 IDE。
猜你喜欢
  • 2017-11-22
  • 2018-05-06
  • 2018-06-19
  • 2017-03-23
  • 2011-11-14
  • 1970-01-01
  • 1970-01-01
  • 2013-10-17
  • 1970-01-01
相关资源
最近更新 更多