Отказ от ответственности : Мои извинения за весь текст ниже (за один простой вопрос), но я искренне считаю, что каждый бит информации имеет отношение к вопросу. Я был бы счастлив узнать иначе. Я могу только надеяться, что, в случае успеха, вопрос (ы) и ответы могут помочь другим в безумии Unicode. Здесь идет.
Я прочитал все обычно высоко ценимые веб-сайты о utf8, в частности этот очень хорош для моих целей, но я также читал классику, как те, которые упоминались в других подобных вопросах в 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
(на всякий случай, если я получу символы, это белый знак вопроса внутри черного круга). Интенты - это десятичное представление 3 байтов, необходимых для кодирования €, но я не совсем уверен, почему 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
ВОПРОС : Самый общий вопрос, который я могу задать: как мне заставить все печатать один и тот же символ? Но я уверен, что будут последующие меры.
Еще раз спасибо и извинения за весь текст.