在Windows终端中接受单字节特殊字符(在cygwin上测试)

时间:2012-09-26 23:47:15

标签: c utf-8 character-encoding multibyte

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

0 个答案:

没有答案