0

Unicode 文字を ANSI 文字に変換する必要があります

byte[] encode = Encoding.Convert(Encoding.Unicode, Encoding.Default, report);

このコードを使用します。これを表示しているときに、余分な ? キャラクターは最初の部分で追加されます

?FF EE 20 12

4

2 に答える 2

2

入力文字列と出力を投稿していただけると助かります。

Encoding.Convert() は「?」を出力します。ターゲットエンコーディングに対応する文字がないソース内の文字を変換しようとした場合。

出力の最初のシーケンスは、疑わしいほどバイト オーダー マーク (BOM) に近いように見えます。ANSI コードページにはこれらがないため、Unicode ストリームの先頭に BOM がある場合は、データをコンバーターに渡す前に BOM を取り除いてみてください。

于 2008-12-26T05:17:54.623 に答える
1

この特定のケースでは、入力データに含まれてはならないものが含まれているようです ( Michael の回答を参照)。

一般に、エンコーディング間の変換を行う場合、クラスを使用して独自のエンコーディング フォールバック メカニズムを実装できますEncoderReplacementFallback。サポートされていない文字については、簡単に空に戻すことができます。Encoding変換時にフォールバックを使用する を指定するだけです。

于 2009-03-15T18:50:19.817 に答える