C# 扩展ASCII问题

C# 扩展ASCII问题,c#,vb.net,unicode,ascii,C#,Vb.net,Unicode,Ascii,我读过维基百科,但我不明白扩展ASCII是否仍然只是ASCII,是否可以在任何运行我的控制台应用程序的计算机上使用? 另外,如果我理解正确,我只能在VB或C#中使用ASCII字符的unicode代码来编写ASCII字符。 谢谢你就像维基百科上说的,这个数字只有0-127。“扩展ASCII”是一个用词不当的词,应避免使用,并用于松散地表示“基于ASCII的某些其他字符集,仅使用单字节”(意思不是多字节)。有时,该术语表示该特定字符集的128-255个代码点⁠—⁠但同样,它是模糊的,你不应该指望它有

我读过维基百科,但我不明白扩展ASCII是否仍然只是ASCII,是否可以在任何运行我的控制台应用程序的计算机上使用? 另外,如果我理解正确,我只能在VB或C#中使用ASCII字符的unicode代码来编写ASCII字符。 谢谢你

就像维基百科上说的,这个数字只有0-127。“扩展ASCII”是一个用词不当的词,应避免使用,并用于松散地表示“基于ASCII的某些其他字符集,仅使用单字节”(意思不是多字节)。有时,该术语表示该特定字符集的128-255个代码点⁠—⁠但同样,它是模糊的,你不应该指望它有任何具体的含义

该术语的使用有时会受到批评,因为它可能被错误地解释为ASCII标准已更新为包含128个以上的字符,或者该术语明确地标识了一种编码,这两种编码都是不真实的

资料来源:


ASCII仅包含值为0-127的字符,这些字符在所有计算机上都是相同的。(,尽管这主要是一个字形问题,而不是语义问题。)

扩展ASCII是指为128-255范围分配各种字符的各种单字节代码页。没有单一的“扩展ASCII”字符集


在C#和VB.NET中,所有字符串都是Unicode,因此默认情况下,无需担心这一点-在控制台应用程序中是否可以显示字符是所使用的字体的问题,而不是任何特定单字节代码页的限制。

正如其他人所说,真正的ASCII始终是每个字节的低7位。在Unicode标准出现(并且普遍存在)之前,已经发布了使用第八位的ASCII字符集的各种扩展。Windows世界中最常见的是

如果您希望在.NET中使用此编码,可以得到如下结果:

Encoding windows1252 = Encoding.GetEncoding("windows-1252");

您没有编写在EBCDIC系统上运行的软件P@Roger:不,不,我没有。我认为OP也不会这么做:)(也,谢谢。)谢谢,如果我只使用前127个字符,我可以肯定它们会显示得很好,对吗?@Mojmir:假设你不使用任何不可打印的字符,我们忽略了关于日文或韩文系统中用于反斜杠的字形的问题,那么是的。嗯,它们是不可打印的,因此,如果你试图打印它们,你就不能指望发生任何明智的事情。如果您正在考虑在旧DOS时代通常可以显示的标志符号,则这些标志符号有等效的Unicode字符,但根据控制台字体的不同,您可能无法显示所有标志符号-您必须自己尝试。有关此映射的示例,请参阅。您计划在控制台应用程序中使用什么类型的字符?图形字符?非英语字符?@Mojmir阅读你得到的答案。“扩展ASCII”不存在,ASCII也没有微笑和箭头。事实上,汉斯的回答似乎很好,完美地回答了这个问题,不是吗@Mojmir仍然没有阅读我看到的答案。:)如果您正试图用一个时髦的老式GUI制作一个控制台应用程序,那么还有其他更好的方法,比如为新的诅咒使用.NET包装器:控制台不使用ASCII。它使用“OEM代码页”,可能是因为传统的DOS原因。几乎没有其他工具使用此代码页;您不能使用字符0x02并期望在文本编辑器中获得笑脸。ASCII 0x02是一个不可见的控制代码。相反,您需要Unicode U+263的白色笑脸,
。您在哪里“查找ASCII”?因为根据实际的ASCII标准,字符0x02是“文本开头”很少使用的控制代码,而不是笑脸或任何其他可见字符。该位置的笑脸纯粹是DOS OEM代码页的东西,而不是ASCII的一部分。