如何在C#中创建一个字符串以接受不可打印的ASCII扩展字符,例如•,当我尝试将字符串放入字符串时,它只是给出一个空格或为空。
答案 0 :(得分:1)
扩展ASCII只是ASCII,8位高位设置为不同的值。
问题在于没有委员会批准扩展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)
详情为here
答案 1 :(得分:0)
试试这个.. 将这些字符转换为字符串,如下所示。
string equivalentLetter = Encoding.Default.GetString(new byte[] { (byte)letter });
现在,等效字母包含正确的字符串。 我试过这个欧元符号,它有效。
答案 2 :(得分:0)
.NET字符串是UTF-16编码的,而不是扩展的ascii(无论是什么)。只需在字符中添加一个数字,就可以在UTF-16普通集中为您提供另一个定义的字符。如果要查看基本字符,就像在扩展ASCII编码中那样,您需要将新计算的字母从您正在谈论的任何编码转换为UTF-16。请参阅:http://msdn.microsoft.com/en-us/library/66sschk1.aspx