对于Python 3及其Unicode字符串,只要遵循以下规则,原始代码应该可以正常工作:以支持字符的编码保存文件。在
如果不是UTF-8默认值,则通过#coding: 声明源编码。在
默认控制台编码支持字符。在
控制台字体支持字符字形。在
注意,我在下面添加的coding语句是可选的,因为utf8是python3的默认值。只要确保你的文件是以正确的编码保存的。在# coding: utf8
print('╔════════════════════════════════════╗')
print('║ Hello World! ║')
print('╚════════════════════════════════════╝')
Windows控制台上的输出(代码页437,控制台字体):
^{pr2}$
PythonWin IDE上的输出(UTF-8编码,通常的Linux默认值,加上Courier新字体):
^{pr2}$
注意chcp 65001(UTF-8)在Windows和/或Python 3上是有缺陷的:╔════════════════════════════════════╗
��═══════════════════════╗
�══════════════╗
�════════╗
�════╗
��═╗
��
║ Hello World! ║
��
╚════════════════════════════════════╝
��═══════════════════════╝
�══════════════╝
�════════╝
�════╝
��═╝
��
另外请注意,即使在python2上,也从来没有需要setdefaultdecoding。Unicode字符串不是默认值。这段代码适用于python2.X和python3.3及更高版本,因为python3.3添加了可选的u''语法,以帮助移植python2.X代码:# coding: utf8
print(u'╔════════════════════════════════════╗')
print(u'║ Hello World! ║')
print(u'╚════════════════════════════════════╝')