如何在 C# 中创建一个字符串以接受不可打印的 ASCII 扩展字符,例如 • ,因为当我尝试将 • 放入字符串时,它只会给出一个空格或空值。
问问题
6815 次
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 回答