我正在 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。