3

重複の可能性:
char オブジェクトはどの文字エンコーディング (Unicode バージョン) セットに対応していますか?

以前に尋ねられたことがあると確信しているので、これを尋ねるのは少し怖いのですが、見つかりません。それはおそらく明らかなことですが、私はこれまでエンコーディングを勉強したことがありません。

int Convert(char c)
{
    return (int)c;
}

その方法によって生成されるエンコーディングは何ですか? 私はそれがASCIIであるかもしれないと思った(少なくとも128未満)が、以下のコードを実行すると...最初の文字としてスマイリーフェイスが生成された?何?間違いなくASCIIではありません...

for (int i = 0; i < 128; i++)
    Console.WriteLine(i + ": " + (char)i);
4

2 に答える 2

5

C#charは UTF-16 エンコーディングを使用します。言語仕様1.3 型と変数には次のように書かれています。

C# での文字と文字列の処理では、Unicode エンコーディングが使用されます。char 型は UTF-16 コード単位を表し、string 型は一連の UTF-16 コード単位を表します。

UTF-16 は、ASCII 範囲 0 から 127 の文字コードが UTF-16 でも ASCII と同じことを意味するという点で、ASCII と重複しています。プログラムの出力にあるスマイリー フェイスは、おそらくコンソールが 0 ~ 31 の範囲の印刷できない文字をどのように解釈するかを示しています。

于 2012-05-13T15:30:08.913 に答える
0

各文字は UTF-16 コード ポイントです。ただし、Unicode が正規化されるように、適切な Encoding クラスを使用する必要があります。C# と UTF-16 文字を参照 してください

于 2012-05-13T15:30:19.943 に答える