免責事項:以下のすべてのテキスト(1つの簡単な質問)についてお詫び申し上げますが、すべての情報が質問に関連していると心から思います. それ以外で教えていただけると幸いです。成功した場合、質問と回答が Unicode 狂気の他の人に役立つことを願っています。ここに行きます。
私は utf8 に関する通常高く評価されているすべての Web サイトを読みましたが、特にこれは私の目的には非常に適していますが、SO の他の同様の質問で言及されているような古典も読みました。ただし、仮想ラボにすべてを統合する方法については、まだ知識が不足しています。私はEmacsを使っています
;; Internationalization
(prefer-coding-system 'utf-8)
(setq locale-coding-system 'utf-8)
(set-terminal-coding-system 'utf-8)
(set-keyboard-coding-system 'utf-8)
(set-selection-coding-system 'utf-8)
私の.emacsでは、xtermはで始まりました
LC_CTYPE=en_US.UTF-8 xterm -geometry 91x58\
-fn '-Misc-Fixed-Medium-R-SemiCondensed--13-120-75-75-C-60-ISO10646-1'
私のロケールは次のとおりです。
LANG=en_US.UTF-8
LC_CTYPE=en_US.UTF-8
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
私の質問は次のとおりです (回答の一部はアプリケーションの予想される動作である可能性がありますが、それでも理解する必要があるので、ご容赦ください):
次の C プログラムを想定します。
#include <stdio.h>
int main(void) {
int c;
while((c=getc(stdin))!=EOF) {
if(c!='\n') {
printf("Character: %c, Integer: %d\n", c, c);
}
}
return 0;
}
これを xterm で実行すると、次のようになります。
€
Character: � Integer: 226
Character: �, Integer: 130
Character: �, Integer: 172
(念のため、取得した文字が黒い円内の白い疑問符です)。int は € をエンコードするために必要な 3 バイトの 10 進数表現ですが、なぜ xterm がそれらを適切に表示しないのか正確にはわかりません。
代わりに、マウスパッド、たとえば印刷
Character: â, Integer: 226
Character: ,, Integer: 130 (a comma, standing forU+0082 <control>, why?!)
Character: ¬, Integer: 172
その間、Emacsは表示します
Character: \342, Integer: 226
Character: \202, Integer: 130
Character: \254, Integer: 172
質問: 私ができる最も一般的な質問は次のとおりです。すべてを同じ文字で印刷するにはどうすればよいですか? しかし、私はフォローアップがあると確信しています。
もう一度ありがとう、そしてすべてのテキストについてお詫び申し上げます。