源:
#include <stdio.h>
int main()
{
char buff[100] = {0};
char ch;
int index = 0;
scanf("%s", buff);
ch = buff[index];
while (ch) {
printf("%2x", ch);
ch = buff[index++];
}
return 0;
}
问题是为什么编码没有改变?我认为它应该是'\ xce \ xd2'(我的gb18030编码)。
或者gnome-terminal(基本shell)将每个输入转换为utf8编码,无论使用什么语言环境?
感谢。
答案 0 :(得分:0)
通常,您的输入系统(在您的情况下,gnome-terminal)会以特定字符编码(区域设置的第二部分)生成输入字符。这通常由其他一些方法(命令行选项,菜单选项,硬编码到程序中等)设置,而不是由环境变量设置。因此,要使用的语言环境变量中的字符编码通常有一个合理的值:输入系统生成字符的那个。您可以或多或少地自由更改语言(语言环境的第一部分),但不能更改字符编码。