0

データベースから SQLASCII 文字列を読み取っていて、宣言した big5 エンコーディングに基づいて適切にデコードされなかったバイトがいくつか見つかりました。以下は簡単な問題です。Python のビッグ 5 エンコーディング テーブルは、これらの 2 文字をデコードする方法を認識していないようです。私が知る限り(私は専門家ではありません)、これらは有効な漢字です。これは、Notepad ++ を使用し、エンコーディングを変更して漢字として表示できるためです。Notepad++ での表示をこの Web サイトと比較したところ、文字が一致するため、big5 エンコーディング テーブルの有効なバイトであると想定しています。

http://ash.jp/code/cn/big5tbl.htm

by = b'\xBD\xC6\xBB\x73'
print(by,len(by))
print(by.decode('big5'))

b'\xbd\xc6\xbbs' 4

トレースバック (最新の呼び出しが最後): ファイル "qtest1.py"、15 行目、print(by.decode('big5')) ファイル "C:\Python32\lib\encodings\cp1252.py"、19 行目コード戻り codecs.charmap_encode(input,self.errors,encoding_table)[0] UnicodeEncodeError: 'charmap' コーデックは位置 0-1 の文字をエンコードできません: 文字マップ

どんな助けでも大歓迎です...

4

1 に答える 1

0

注意深く見てください:それは-デコードではなく、エンコードUnicodeEncodeErrorに失敗しています。また、使用しているモジュールも確認してください。したがって、何かがテキストをcp1252にエンコードしようとしています。...\lib\encodings\cp1252.py

実際、big5としてのデコードは正常に機能します。正確なコードを実行して、漢字を取得できます[1]。問題は端末です。PythonはWindowsコードページ(cp1252)を使用して漢字をエンコードしようとしていますが、漢字をどう処理するかがわかりません。適切なエンコーディング(UTF-8またはbig5)で開いたファイルに書き込むことができるはずです。または、ターミナルに書き込むのではなく、必要なことを何でも行うことができます。

[1]ほとんどのLinux端末はUTF-8を使用しているため、どの文字でも機能します。

于 2012-04-13T17:09:58.760 に答える