特定の「特殊文字」の前に\ xが付いているテキストをデコードしようとしています。以下のマッピングを手動で作成しました。
\x28 (
\x29 )
\x3a :
e.g. 12\x3a39\x3a03 AM
誰もがこのエンコーディングが何であるかを認識していますか?
[〜#〜] ascii [〜#〜] です。 4つの文字\xST
はすべて1文字に変換され、そのASCIIコードはST
(in hexadecimal ))で、ここでS
およびT
は0123456789abcdefABCDEF
のいずれかです。
'\xAB'
表記は、C、C++、Perl、およびCからキューを取得する他の言語で、文字列の途中で16進文字コードを表現する方法として使用されます。
表記'\007'
は、バックスラッシュの後に数字がある場合、文字コードに8進数を使用することを意味します。
C99以降では、\uabcd
と\U00abcdef
を使用してUnicode文字を16進数でエンコードすることもできます(4桁と8桁の16進数が必要です。\U
の最初の2桁の16進数は0
は有効であり、多くの場合、3桁目も0
になります— 1
が他の唯一の有効な値です)。
Cでは、8進数のエスケープは最大3桁に制限されていますが、16進数のエスケープは2桁または3桁に制限されていません。 16進数のエスケープは、16進数ではない最初の文字で終了します。質問では、シーケンスは"12\x3a39\x3a03"
です。これは、1
、2
、\x3a39
、\x3a03
の4文字を含む文字列です。 4桁の16進文字に使用される実際の値は実装定義です。目的の結果(\x3A
を使用してコロン:
を表す)を実現するには、コードで文字列連結を使用する必要があります。
"12\x3a" "39\x3a" "03"
現在、8文字が含まれています:1
、2
、:
、3
、9
、:
、0
、3
。
私が扱っているのは、送信先の出力ストリームとは異なる方法でエンコードされたUnicode文字列だと思います。すなわち。 latin-1デバイスへのutf-16文字列出力。そのような状況では、特定の文字がエスケープ値として出力され、制御文字や間違った文字が出力デバイスに送信されるのを防ぎます。これはpythonで少なくとも発生します。