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」になります(16 進数の 61 は文字「d」です)。í (0xA1 または U+00ED) などの特殊文字を入力しようとすると、次の出力が得られます。
$ ./a.exe
í
ffffffc3 ffffffad
http://www.utf8-chartable.de/の UTF-8 コードページは、後方の 'i' が実際には 0xc3ad であることを示しています。0xc3ad ではなく 0xA1 を端末に入力したいので、この文字を 0xA1 としてコピーして貼り付けるにはどうすればよいですか? 「charmap」からコピペしてます。文字を含むテキスト ファイルを ANSI で保存してコピー アンド ペーストしようとしましたが、それでも 0xc3ad が表示されます。助けてください。
編集:Macで同じことを実行すると、c3adも得られます。