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 回答