10

XVI32 (Hex Editor) を使用してユーロ記号の 16 進表現を取得したところ、値が 80 になりました。
別のサイト: http://www.string-functions.com/string-hex.aspxも同じです。
16 進表現が 0x20AC ではなく 80 である理由がわかりません。この 0X80 は 10 進数で 128 を示し、Alt+0128 を使用すると実際にユーロ記号が生成されます。

この文字列から 16 進変換への変換の背後にあるロジックについて、誰かが光を当てることができますか?

ありがとう

4

6 に答える 6

9

文字エンコーディング (または文字セット) は、文字を一連のバイト値にマップします。あなたの文字セットはwindows-1252で、ユーロ記号を単一の16進バイト0x80(Odedが言うように、10進数で128です)としてエンコードします。各文字セットは、非 ASCII 文字を異なる方法でエンコードします。その 0x80 について、基本的に「正しい」または「間違っている」ものは何もありません。

于 2011-01-09T16:57:09.387 に答える
2

Unicode が登場したのは、文字のエンコードに関して非常に遅れた (1992 年から 1993 年頃) ことです。その前に、OEM は独自のエンコーディングを使用していました。Windows 環境では、ロケールに固有の多くのエンコーディングがあります。したがって、Windows の Windows のエンコーディング: Western に従って、ユーロの場合は 0x80 になります。ただし、Unicode は BMP の通貨記号ブロック (U+20A0 から U+20CF) のすべての通貨記号をカバーしています。したがって、Unicode によると、ユーロ通貨記号には U+20AC があり、Windows エンコーディングによると、同じものに 0x80 があります。

違いを確認するには、Windows マシンで chammap.exe を開き、詳細ビューを確認します。文字セットから Windows: Western を選択します。そこで理由がわかります。

詳細については、https://en.wikipedia.org/wiki/Windows-1252を参照してください。

于 2015-08-12T11:38:20.520 に答える
2

10 進数の 128 は 16 進数の 80 です。

編集: 0x20AC は 10 進数で 8364 になります。


このページによると、128 はUTF-8 (またはその他の Unicode) では正しくありませんが、windows-1252 では正しいです (他の場所では iso-8859-15 にもあります)。

通常、Windows でユーロ記号の付いたキーボード キーを使用する場合、生のオクテット 128 が実際に生成され、ファイルに挿入されます .... ドキュメントに次の情報が付随している場合、このような方法は正式に正しいと言えます。データが問題の文字にマップされるエンコーディングを指定します。これは、それぞれ windows-1252 または iso-8859-15 エンコーディングを意味し、HTTP ヘッダーで指定する必要があります。

于 2011-01-09T16:49:32.577 に答える
1

異なる結果が表示される理由は、文字エンコーディングです。

数値 0x20AC は、ユーロ記号の Unicode コードポイントです。使用するエンコーディングに応じて、さまざまなコードが得られます。Windows では通常、たとえばドイツ語の cp1252 などがあります。これは ISO8859-1 エンコーディングに非常に似ており、0x80 にユーロ記号が含まれています。

したがって、ユーロ記号に対して取得する 16 進コードは、表示するデータで使用されるエンコーディングによって異なります。unicode.org が提供するエンコーディング ファイルを見て、利用可能なさまざまなエンコーディングのいくつかを確認できます。ここで利用可能なマッピングを見てください: http://unicode.org/Public/MAPPINGS/

于 2011-01-09T17:01:19.577 に答える
0

あなたのマシン (およびそのサイト) では、コード 128 がユーロ記号に対応するようなローカル コード ページになっていると思います。私のマシンでは、Alt+0128 はヘブライ語の文字 Alef にマップされます。これは、別のコード ページに設定されているためです。

次のように入力すると、ユーロの Unicode コードを確認できます。

javascript:alert("€".charCodeAt(0))

ブラウザのアドレスバーに

于 2011-01-09T17:01:08.717 に答える
0

ユーロ記号は (拡張) Unicode 文字であるため、0x20AC が正しいものである必要があります。
Alt+0128 を押すとユーロ記号が生成されるという事実は、これとは何の関係もありません (おそらく Windows で行っているのでしょうか? Windows 固有のものです) 0x80 または 128 は有効な HTML コードではありません (動作は未定義です): http: //www.ascii.cl/htmlcodes.htm
詳細はこちら: http://www.cs.tut.fi/~jkorpela/html/euro.html

于 2011-01-09T17:08:48.213 に答える