[英]C : wrong char to ascii conversion (char from the extended ascii table)
[英]Print extended ASCII char in C, Linux
我正在尝试打印所有扩展的ASCII字符。 我在论坛上找到了一个代码:
#include <stdio.h>
#include <wchar.h>
#include <locale.h>
#include <iostream>
int main(void) {
wchar_t c;
setlocale(LC_ALL, "C");
for (c = 128; c < 256; c++) {
wprintf(L"char nr %d: %lc\n", c, c);
}
printf("\n%s\n", setlocale(0, NULL));
std::cin.get();
std::cin.get();
return 0;
}
在屏幕截图中,您可以在Windows和Linux中查看此代码的结果。 我知道问题出在编码,但我不知道如何解决。
好的,一切都很好。 ASCII字符限制在128以下。以上内容取决于实际字符集。
在Linux中,您显示的是ISO-8859-1(又名Latin1)字符集的子集,而在Windows上,则显示Windows代码页850。在Linux上声明UTF8字符集时,您应仅显示错误字符,但是您的终端似乎将某些字节解释为latin1。
如果要显示所有Latin1字符,只需更改LANG
环境变量:
export LANG=pl_PL.ISO-8859-1
或者您的语言似乎是波兰语,ISO-8859-2可能更合适:
export LANG=pl_PL.ISO-8859-2
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.