0

big5 でエンコードされた文字を含むバイナリ ファイルを読み込んでいます。ダブルバイトシーケンスを読み取ると、バイトのリストとして表示されます。

>>> bytes = ['0xa6', '0x7b']

これらの文字列バイトを変更すると:

>>> big5_str = ''
>>> for hexVal in bytes:
>>>     newHexVal = '\\' + hexVal[1:]
>>>     big5_str += newHexVal

したがって、次のように表示されます。

>>> print big5_str
>>> '\xa6\x7b'

しかし、実際には big5_str にはエスケープ '\' がまだ文字列に含まれています。

>>> big5_str
>>> '\\xa6\\x7b'

big5 を使用してデコードすると、同じ文字列しか返されません (二重のバックスラッシュのため):

>>> print byte_string.decode('big5')
>>> '\xa6\x7b'

バイト シーケンスを 16 進数値として明示的にコーディングすると、次のようになります。

>>> bytes2 = '\xa6\x7b'
>>> print bytes2.decode('big5')
>>> 州

私の質問は、エスケープされていないバックスラッシュを使用して、文字列ではなくバイトとして認識されるように、これらのバイトを読み取り、「\ x **」形式でフォーマットするにはどうすればよいですか?

4

0 に答える 0