1

Python 3.3のプログラムに使用したい♥や❦のような特別な記号をたくさん見つけました。プログラムはIDLEで問題なく動作しますが、コマンドラインを使用して実行するとすぐにクラッシュし、文字が認識されないことに関するエラー:

Traceback (most recent call last):
    File "C:python33\meh.py", line 1, in <module>
        print("\u2665")
    File "C:\python33\lib\encodings\cp437.py", line 19, in encode
        return codecs.charmap_encode(input,self.errors,encoding_map)[0]
UnicodeEncodeError: 'charmap' codec can't encode character 'u\u2665' in position 0: character maps to <undefined>

コマンドラインに表示できるように、これらのシンボルをmap他の場所に移動するにはどうすればよいでしょうか。<undefined>

Pythonのcp437.pyに追加してみることができると思いますが(エラーからそれを計算しました)、各シンボルの16進数/ 10進数/その他を取得する方法と、それを配置する場所がわかりません。

CEDILLAを使用したラテン大文字Cの例:

-マップキーと値のデコード: 0x0080: 0x00c7, # LATIN CAPITAL LETTER C WITH CEDILLA

--デコードテーブル文字列: '\xc7' # 0x0080 -> LATIN CAPITAL LETTER C WITH CEDILLA

-マップキーと値のエンコード: 0x00c7: 0x0080, # LATIN CAPITAL LETTER C WITH CEDILLA

すべてのシンボルに3つすべてが必要かどうかはわかりません(それぞれが何をするかは言うまでもありません)。デコードマップとテーブルを備えているものもあれば、代わりにデコードテーブルとエンコーディングマップを備えているものもあります。

4

2 に答える 2

3

端末の文字を適切にエンコードする必要があります。 実用的なUnicode、または、痛みを止める方法には詳細があります。

例えば:

print(my_text.encode('utf8'))
于 2012-12-02T02:22:13.433 に答える
0

個人的には、デフォルトでユニコードを使用するUbuntuで私にとって魅力のように機能しますが、次を使用してテキストを印刷してみることができます

import sys
TestText = "Test - āĀēĒčČ..šŠūŪžŽ" # this NOT utf-8...it is a Unicode string in Python 3.X.
TestText2 = TestText.encode('utf8')
sys.stdout.buffer.write(TestText2)

https://stackoverflow.com/a/3603160/160386から

于 2012-12-02T06:57:48.743 に答える