11
python2には、string-escape
とunicode-escape
があります。 UTF-8バイトの文字列、文字列エスケープは\をエスケープと非ASCIIバイトを保つことができるために、のような:python3 unicode-escapeは非ASCIIバイトでは動作しませんか?
"你好\\n".decode('string-escape')
'\xe4\xbd\xa0\xe5\xa5\xbd\n'
しかし、のpython3で、string-escape
が削除されます。私たちは、バイトに文字列をエンコードし、unicode-escape
でそれをデコードする必要があります。
"This\\n".encode('utf_8').decode('unicode_escape')
'This\n'
これは、ASCIIバイトで動作ありません。しかし、ASCII以外のバイトもエスケープされます。
"你好\\n".encode('utf_8')
b'\xe4\xbd\xa0\xe5\xa5\xbd\\n'
"你好\\n".encode('utf_8').decode('unicode_escape').encode('utf_8')
b'\xc3\xa4\xc2\xbd\xc2\xa0\xc3\xa5\xc2\xa5\xc2\xbd\n'
エンコードされていないバイトはすべてエスケープされ、エンコードエラーにつながります。
これには解決策がありますか? Python3では非ASCIIバイトをすべて保持し、すべてのエスケープ文字をデコードすることは可能ですか?