1

1F0A0から1F0DFの範囲のUnicode値を持つトランプのセットを表示しようとしています。コードに4文字を超える文字を使用しようとすると、エラーが発生します。このコンテキストでこれらの文字を使用することは可能ですか?VisualStudio2012を使用しています。

char AceOfSpades ='\ u1F0A0'; 入力するとすぐに、「文字リテラルの文字が多すぎます」というエラーが表示されます。これは、UnicodeまたはUTF8エンコーディングのいずれかでも表示されます。上記のように「\u1F0A」を表示しようとすると...Unicodeでは「?」と表示されます UTF8では、3文字を表示します。

OutputEncoding string AceOfSpades = "\U0001F0A0"; Default、Unicode、ASCII: ?? UTF7:+2DzcoA- UTF8:4​​つの奇妙な文字UTF32、BigEndianUnicode:IOException のすべてのオプションを試しましConsole.OutputEncoding = System.Text.Encoding.UTF32;たが、オプションであるにもかかわらず、コードの唯一の行であってもクラッシュします。UTF16はリストに含まれていませんでした。

使用しているUnicodeのバージョンを確認するにはどうすればよいですか?

4

3 に答える 3

4

Basic Multilingual Plane 以外の文字を使用するには\U、 ではなくでエスケープする必要があります\u。これには 8 桁の 16 進数が必要です (正直なところ、すべての Unicode 文字は 6 桁の 16 進数で記述できるため、ほとんど意味がありません)。

ただし、char.NET の型は UTF-16 コード単位しか表現できません。つまり、BMP 外の文字にはchars のペア (サロゲート ペア) が必要です。したがって、文字列にする必要があります。

string AceOfSpades = "\U0001F0A0";
于 2013-03-02T02:51:24.833 に答える
0

(わかりやすくするために投稿を編集するまで) シンボルが正しく表示されていないと仮定します。そうでない場合は、この回答を削除します。

コンソールのエンコーディングを Unicode または UTF-8 に設定します。

Console.OutputEncoding = System.Text.Encoding.Unicode

また

Console.OutputEncoding = System.Text.Encoding.UTF8.

フォントが Unicode/UTF-8 文字 (Lucida Console など) を表示できることを確認してください。

于 2013-03-01T23:31:16.383 に答える