1

如何在 C# 中创建一个字符串以接受不可打印的 ASCII 扩展字符,例如 • ,因为当我尝试将 • 放入字符串时,它只会给出一个空格或空值。

4

3 回答 3

1

扩展 ASCII 只是 8 个高位设置为不同值的 ASCII。

问题在于没有委员会批准扩展 ASCII 标准。那里有很多变体,无法判断您使用的是什么。

现在 C# 使用 UTF-16 编码,这将不同于您使用的任何扩展 ASCII。

您必须找到匹配的 Unicode 字符并将其显示如下

string a ="\u2649"  ; //where 2649 is a the Unicode number
Console.write(a) ;  

或者,您可以找出您的文件使用的编码并像这样使用它,例如。编码 Windows-1252:

Encoding encoding = Encoding.GetEncoding(1252);

对于 UTF-16

Encoding enc = new UnicodeEncoding(false, true, true);

并使用转换它

 Encoding.Convert (Encoding, Encoding, Byte[], Int32, Int32)

详情在这里

于 2012-12-19T04:25:05.467 回答
0

试试这个.. 将这些字符转换为字符串,如下所示。

string equivalentLetter = Encoding.Default.GetString(new byte[] { (byte)letter });

现在,等效字母包含正确的字符串。我试过这个用于欧元符号,它有效。

于 2012-12-19T03:35:06.583 回答
0

.NET 字符串是 UTF-16 编码的,而不是扩展 ascii(不管是什么)。通过简单地向一个字符添加一个数字,您将在 UTF-16 纯文本集中为您提供另一个定义的字符。如果您想查看扩展 ASCII 编码中的基础字符,您需要将新计算的字母从您正在谈论的任何编码转换为 UTF-16。请参阅:http: //msdn.microsoft.com/en-us/library/66sschk1.aspx

于 2012-12-19T04:06:02.283 回答