MSDN vb.netによると、この拡張文字セットを使用します。私の経験では、実際にこれを使用しています:
- 私は何が欠けていますか?なぜ一方を使用し、もう一方を使用すると言うのですか?
- 私は何か間違ったことをしていますか?
- 元の文字セットへの何らかの変換ツールはありますか?
MSDN vb.netによると、この拡張文字セットを使用します。私の経験では、実際にこれを使用しています:
この動作は、Chr
コマンドのドキュメントで定義されています。
返される値は、System.Globalization 名前空間の TextInfo クラスの ANSICodePage プロパティに含まれる、現在のスレッドのコード ページによって異なります。System.Globalization.CultureInfo.CurrentCulture.TextInfo.ANSICodePage を指定して、ANSICodePage を取得できます。
したがって、Chr
127 より大きい値の出力はシステムに依存します。再現可能な結果が必要な場合は、 Encoding.GetEncoding(String)をEncoding
呼び出して目的のインスタンスを作成し、 Encoding.GetChars(Byte())を使用して数値を文字に変換します。
質問にリンクされているグラフの1 レベル上Chr
に移動すると、このグラフが常にコマンドの出力であると主張していないことがわかります。
127 以上の Windows に表示される文字は、選択した書体によって異なります。
このセクションの図は、コンソール アプリケーションのデフォルトの文字セットを示しています。
アプリケーションは、コンソール アプリケーションではなく、WinForm アプリケーションです。コンソールでも、使用する文字セットを (コマンドを使用するなどしてchcp
) 変更できるため、「デフォルト」という言葉が使われています。
.net で使用されるエンコーディングの詳細については、次の MSDN 記事をお勧めします: Character Encoding in the .NET Framework。
最初の文字セットは Code Page 437 (CP437) で、2 番目は Windows Latin-1 とも呼ばれる Code Page 1252 (CP1252) のように見えます。
VB.Net は単に PC のデフォルトのエンコーディングを選択しているだけだと思います。
これはどうやって書いたのですか?通常、出力ストリーム関数を使用する場合、それに伴うエンコーディングを指定できるためです。
編集:これはC#ではないことは知っていますが、アイデアを見ることができます...
次のようにして、ファイルストリームのエンコーディングを設定する必要があります: ファイルストリームを作成するときにエンコーディングを設定する