web-dev-qa-db-ja.com

\ x(バックスラッシュx)接頭辞を使用するエンコーディングはどれですか?

特定の「特殊文字」の前に\ xが付いているテキストをデコードしようとしています。以下のマッピングを手動で作成しました。

\x28   (
\x29   )
\x3a   :

e.g. 12\x3a39\x3a03 AM

誰もがこのエンコーディングが何であるかを認識していますか?

34
Alex Angas

[〜#〜] ascii [〜#〜] です。 4つの文字\xSTはすべて1文字に変換され、そのASCIIコードはST(in hexadecimal ))で、ここでSおよびT0123456789abcdefABCDEFのいずれかです。

35
pts

'\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"です。これは、12\x3a39\x3a03の4文字を含む文字列です。 4桁の16進文字に使用される実際の値は実装定義です。目的の結果(\x3Aを使用してコロン:を表す)を実現するには、コードで文字列連結を使用する必要があります。

"12\x3a" "39\x3a" "03"

現在、8文字が含まれています:12:39:03

18

私が扱っているのは、送信先の出力ストリームとは異なる方法でエンコードされたUnicode文字列だと思います。すなわち。 latin-1デバイスへのutf-16文字列出力。そのような状況では、特定の文字がエスケープ値として出力され、制御文字や間違った文字が出力デバイスに送信されるのを防ぎます。これはpythonで少なくとも発生します。

0
lostlogic