1

私のアプリケーションは、TCP 経由で ISO 8859-1 文字の整数値を受信し、テスト用にコンソールに表示する必要があります。Int/Bytes を ISO 8859-1 文字列に変換するために、この質問の受け入れられた回答からコードを取得しました。

var e = Encoding.GetEncoding("iso-8859-1");
var s = e.GetString(new byte[] { 189 });

たとえば、ISO 8859-1の½である189の値で問題なく動作します。しかし、私のテストでは、このサイトによると、値がš (キャロン付きのラテン小文字 S)のバイトを取得しました。 問題は、コンソールに表示されず、そのような疑問符が表示される だけで、デバッガーにはプレーンな文字列しか表示されないことです:エラーの可能性は何ですか? どんな助けでも大歓迎です。154

ここに画像の説明を入力ここに画像の説明を入力



4

1 に答える 1

3

私はここで手足を出すつもりです。ISO/IEC 8859-1 では、126 ~ 159 の値は定義されていません。http://en.wikipedia.org/wiki/ISO/IEC_8859-1を参照してください。

これは機能します。

  var e = Encoding.GetEncoding("Windows-1252");
  var s = e.GetString(new byte[] { 154 });

  Console.OutputEncoding = Encoding.GetEncoding("Windows-1252");

  Console.WriteLine(s);

Windows-1252 が好まれると思います。

...しかし、HTML 5 仕様のドラフトでは、ISO-8859-1 として宣伝されているドキュメントは、実際には Windows-1252 エンコーディングで解析する必要があります[2])。

http://en.wikipedia.org/wiki/ISO/IEC_8859-1

于 2013-03-16T13:57:41.273 に答える