如何通过C程序打印127到160的扩展ASCII字符?

我正在尝试下面的代码来打印所有的ASCII字符,但它不打印任何127到160.我知道它们是控制字符集或一些拉丁/西class牙字符。 如果从Windows复制粘贴相同的字符,它将在unix中打印得很好。 为什么不通过C程序?

#include  int main() { int i; char ch; for(i = 0; i < 256; i++) { printf("\n%03d %02x %02c",i ,i ,i); } } 

ASCII是一个7位代码。 字节值大于128的解释取决于操作系统,语言环境/语言设置等。 它们不是标准的。 在英文版的Windows下,它们最常由CP1252定义; 在Linux上,它们通常是ISO-8859-1。 有些操作系统使用UTF-8,它不是字符集本身,而是通过对大多数字符使用多个字节将Unicode编码为8位流的方法。 如果您确实需要使用标准ASCII 32-126之外的字符,那么您应该使用宽字符和区域设置。

BTW,字符127是一种特殊情况:它是控制字符“rubout”,表示擦除数据。 (这样做是为了通过打孔所有孔来擦除一段纸带! – 是的,我们中的一些人已经足够记住纸带了)。

您可能想要查看setlocale。 我不知道你在寻找哪一组字符,但你可以尝试setlocale (LC_ALL,""); 设置您的打印字符以匹配环境(这似乎符合您的要求,因为复制粘贴工作)。