1

私は自分のテストコードを期待していました:

string Test = ASCIIEncoding.ASCII.GetString(new byte[] { 0x01, 0x02, 0x03, 0x04 });

「????」を含む文字列を返す しかし、そうではありません。すべての制御文字と上位ビット セット文字が「?」に変換されるバイト セットの ASCII エンコーディングを取得するにはどうすればよいですか?

ありがとう、アンディ

アップデート:

私の質問は次のとおりだったと思います: StreamWriter に印刷可能な ASCII 文字のみを出力させるにはどうすればよいですか? ファイル内の制御文字に異常をきたす古いプログラムで動作するテキスト ファイルを生成する必要があります。

4

1 に答える 1

1

? への自動変換はありません。それ自体。いつもの ?ホストプログラムによって課された読み取り不能な文字の表現です。

ただし、これらを変換してユーザーに ? が表示されるようにする場合は、代わりに、次のコードを試してください。

string newStr = "";
foreach (char c in MyString) {
    if ((int.Parse(c) < 32)) {
        c = "?";
    }
    newStr = (newStr + c.ToString);
}
于 2012-10-02T12:11:11.323 に答える