Python 3 とその Unicode 文字列を使用すると、次の規則に従う限り、元のコードは問題なく動作するはずです。
- 文字をサポートするエンコードでファイルを保存します。
#coding: <encoding>
UTF-8 のデフォルトでない場合は、ソース エンコーディングを宣言します。
- デフォルトのコンソール エンコーディングは、これらの文字をサポートしています。
- コンソール フォントは文字グリフをサポートします。
以下に追加したcoding
ステートメントは、Python 3 のデフォルトであるためオプションですutf8
。ファイルが実際に正しいエンコーディングで保存されていることを確認してください。
# coding: utf8
print('╔════════════════════════════════════╗')
print('║ Hello World! ║')
print('╚════════════════════════════════════╝')
Windows コンソールの出力 (コード ページ 437、Consolas フォント):
╔════════════════════════════════════╗
║ Hello World! ║
╚════════════════════════════════════╝
PythonWin IDE での出力 (UTF-8 エンコーディング、および通常の Linux の既定値と Courier New フォント):
╔════════════════════════════════════╗
║ Hello World! ║
╚════════════════════════════════════╝
注意chcp 65001
(UTF-8) は Windows や Python 3 ではバグがあります:
╔════════════════════════════════════╗
��═══════════════════════╗
�══════════════╗
�════════╗
�════╗
��═╗
��
║ Hello World! ║
��
╚════════════════════════════════════╝
��═══════════════════════╝
�══════════════╝
�════════╝
�════╝
��═╝
��
また、Python 2 でも注意setdefaultdecoding
が必要になることはありませんでした。Unicode 文字列はデフォルトではありませんでした。このコードは、Python 2.XおよびPython 3.3 以降で動作します。Python 3.3 では、 u''
Python 2.X コードの移植を支援するためにオプションの構文が追加されているためです。
# coding: utf8
print(u'╔════════════════════════════════════╗')
print(u'║ Hello World! ║')
print(u'╚════════════════════════════════════╝')