2012-05-13 18 views
1

可能性の重複:
To which character encoding (Unicode version) set does a char object correspond?エンコーディングの文字

私はその前に頼まれて確信しているように私は、これを聞いてちょっと怖いんだけど、私はできませんそれを見つける。おそらく明らかなことですが、以前はエンコーディングを学んだことはありませんでした。

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

この方法ではどのようなエンコードが生成されますか?私はそれがASCII(少なくとも< 128の場合)かもしれないと思ったが、以下のコードを作成した...最初の文字としてスマイリー顔?何?確かにASCII ...

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

これはあなたの質問に答えるかもしれません:http://stackoverflow.com/questions/6549054/to-which-character-encoding-unicode-version-set-does-a-char-object-correspond – BoltClock

+0

ありがとう。どのように私はこの質問をそれによって解決するか、それをやっても構いませんか?そして、この質問を後で見ているあなたたちには、UTF-16です。私はutf-16で最初のキャラクターが「スマイリーフェイス」であることを確認するためにキャラクターのテーブルを見つけることができないと思われますが、それらは正しいと思います。 – khyperia

+0

私はそれを閉じました。 – BoltClock

答えて

4

C#charは、UTF-16エンコーディングを使用していません。 language specification1.3型と変数、言う:C#で

文字と文字列処理をUnicodeエンコードを使用しています。 char型はUTF-16コード単位を表し、string型はUTF-16コード単位のシーケンスを表します。

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

+0

私は "印刷不可能な文字を印刷する"ためにもう一度upvoteしますか?あなたの最新の編集でコメントしてください。 – BoltClock

+0

@BoltClockおそらく、私たちは自分のようなダイヤモンド改造者のために二重投票をするようにキャンペーンしなければならないだろう! ;-) –

0

各charは、UTF-16コードポイントです。ただし、適切なEncodingクラスを使用して、Unicodeが正規化されていることを確認する必要があります。 C# and UTF-16 characters

関連する問題