• のような印刷不可能な ASCII 拡張文字を受け入れるように C# で文字列を作成するにはどうすればよいですか。
3 に答える
拡張 ASCII は、上位 8 ビットが異なる値に設定された単なる ASCII です。
問題は、どの委員会も拡張 ASCII の標準を承認していないという事実にあります。そこには多くの亜種があり、何を使用しているのかを知る方法はありません。
現在、C# は、使用している拡張 ASCII とは異なる UTF-16 エンコーディングを使用しています。
一致する Unicode 文字を見つけて、次のように表示する必要があります。
string a ="\u2649" ; //where 2649 is a the Unicode number
Console.write(a) ;
または、ファイルが使用しているエンコーディングを見つけて、そのように使用することもできます。エンコーディング Windows-1252:
Encoding encoding = Encoding.GetEncoding(1252);
およびUTF-16の場合
Encoding enc = new UnicodeEncoding(false, true, true);
を使用して変換します
Encoding.Convert (Encoding, Encoding, Byte[], Int32, Int32)
詳細はこちら
.NET 文字列は UTF-16 でエンコードされており、extended-ascii ではありません (それが何であれ)。文字に数字を追加するだけで、UTF-16 プレーン セット内の別の定義済み文字が得られます。基になる文字を拡張 ASCII エンコーディングで表示したい場合は、新しく計算された文字を、話しているエンコーディングから UTF-16 に変換する必要があります。参照: http://msdn.microsoft.com/en-us/library/66sschk1.aspx
これを試してください。これらの文字を次のように文字列に変換します。
string equivalentLetter = Encoding.Default.GetString(new byte[] { (byte)letter });
これで、同等の文字に正しい文字列が含まれるようになりました。EUROシンボルでこれを試してみましたが、うまくいきました。