我正在测试Windows终端中的C程序。我嘲笑了一个我遇到问题的部分的快速例子。示例如下:
$ cat test.c
#include <stdio.h>
#include <stdlib.h>
int main() {
char var[6];
scanf("%s", var);
int i=0;
while(var[i] != '\0') {
printf("%x ", var[i]);
i++;
}
return 0;
}
当我使用带有“正常”字符的字符串(如“dd”)时,输出符合预期“61 61”(十六进制61是字母“d”)。当我尝试输入特殊字符,如í(0xA1或U + 00ED)时,我得到以下输出:
$ ./a.exe
í
ffffffc3 ffffffad
http://www.utf8-chartable.de/处的UTF-8代码页显示向后的'i'实际上是0xc3ad。如何将此字符复制并粘贴为0xA1,因为我真的想将0xA1输入到终端,而不是0xc3ad?我是从“charmap”复制并粘贴的。我甚至尝试用ANSI保存文本文件,然后复制和粘贴,但我仍然得到0xc3ad。请帮助我。
编辑:在Mac上运行相同的操作也给了我c3ad。