1

我在 MVSC++ 中制作了一个程序,它输出内存内容(以 ASCII 格式)。我在 Windows 控制台中看到的 ASCII 似乎与我在各种 ASCII 表(笑脸、菱形、俱乐部、右箭头等)中看到的相匹配。该程序需要在 Linux 下编译(确实如此),但 ASCII 输出看起来完全不同。一些符号是相同的,但其余的则如此不同。有什么办法可以改变终端显示 ASCII 码的方式吗?

编辑:程序正确执行,只是显示不同的ASCII。

4

3 回答 3

3

ASCII 定义从 0x00 到 0x7f 的字符代码。其他所有内容 (0x80-0xff) 都不是 ASCII 标准的一部分,并且取决于操作系统定义为要显示的字符的内容。但是,您提到的字符(笑脸、菱形、俱乐部等)是 ASCII“控制字符”的表示,通常没有视觉表示。Windows 允许您打印这些字符并查看它为它们定义的字形,但您的 Linux 可能会将控制字符解释为格式化控制代码(它们是),而不是打印相应的字形。

于 2009-06-09T01:17:21.290 回答
1

您所看到的是 IBM 最初在 PC 首次在世界上发布时包含的“扩展”字符集。是的,我们要回到强大的恐龙时代,所以请耐心等待。这些字符生活在 $7F 以上,屏幕上对它们的符号的解释甚至会受到所选字体的影响。大多数 linux 发行版现在都使用 UTF-8(或类似的东西),因此,安装的字体可能具有完全不同的符号,甚至缺少字形。如果您正在比较相同数据的“ASCII”表示(这是用词不当,因为它不是真正的 ASCII),它可能完全匹配也可能不完全匹配,因为您必须在两种显示字体中具有相同的“字形”渲染正确地看到类似的表示。

于 2009-06-09T01:21:14.293 回答
0

如果您的浏览器支持 Unicode(并且您安装了正确的字体),您将在下面看到它们。您可以复制并粘贴到支持 unicode 的编辑器(记事本)中。另存为 UTF-16BE 然后,如果您在 HexEditor 中打开,您将看到每个字符可见字形的所有 unicode 代码。例如,第一个 ascii char Null 在 c\c++\java 中具有 Unicode 可见字形 0x2639,您可以像 \u2639 一样使用它。它不是空字符,而是视觉表示。

http://en.wikipedia.org/wiki/Code_page_437

☹☺☻♥♦♣♠•◘○◙♂♀♪♫☼►◄↕‼¶§▬↨↑↓→←∟↔▲▼!"#$%&'()*+,-./0123456789:; <=>? ─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙··√ⁿ²■⓿</p >

于 2010-05-28T22:54:10.170 回答