Как исправить мою локаль для корректного отображения Юникода в irssi?

1292
meneldal

Я только что прибыл в мою новую лабораторию и Японию, и сервер, который я могу использовать, имеет только японские локали. Призыв к locale -aвозврату

C POSIX ja_JP ja_JP.eucjp ja_JP.ujis ja_JP.utf8 japanese japanese.euc 

Поэтому я изменил свои переменные окружения, и теперь моя локаль настроена на то, ja_JP.utf8что должно поддерживать Unicode просто отлично. Теперь возвращается вызов locale (изменено с eucjp):

LANG=ja_JP.utf8 LANGUAGE= LC_CTYPE="ja_JP.utf8" LC_NUMERIC="ja_JP.utf8" LC_TIME="ja_JP.utf8" LC_COLLATE="ja_JP.utf8" LC_MONETARY="ja_JP.utf8" LC_MESSAGES="ja_JP.utf8" LC_PAPER="ja_JP.utf8" LC_NAME="ja_JP.utf8" LC_ADDRESS="ja_JP.utf8" LC_TELEPHONE="ja_JP.utf8" LC_MEASUREMENT="ja_JP.utf8" LC_IDENTIFICATION="ja_JP.utf8" LC_ALL= 

Я могу читать файлы с японскими символами в Unicode просто отлично, использую ли я less, emacs или vim и подключаюсь к PuTTY или удаленному xterm с помощью cygwin. Также кажется, что другие символы Юникода отображаются нормально.

Но тут возникает проблема: если я что-то печатаю по-японски, похоже, что-то идет не так. Мне нравится использовать IRC и по какой-то причине, хотя я могу отлично читать любой японский символ, если я набираю что-то, что отправляется как мусор для других людей. Я использую конфигурацию, найденную здесь http://xkr47.outerspace.dyndns.org/howtos/irssi-utf-8-guide.txt

Я получаю эти результаты для /set charset

term_charset = utf-8 recode_out_default_charset = ISO-8859-15 

а также /set recode

recode = ON recode_autodetect_utf8 = ON recode_fallback = ISO-8859-15 recode_out_default_charset = ISO-8859-15 recode_transliterate = ON 

Если у вас есть предложения, попробуйте придумать способ, который не требует прав root, если это возможно, поскольку администратору потребовалось бы целую вечность, чтобы что-то сделать на сервере. Я много смотрел в Интернете о локали, но я не нашел ничего об этой проблеме.

3
Какой клиент IRC вы используете? Если вы запускаете `cat> testfile.txt`, правильно ли он сохраняет набранный текст? grawity 9 лет назад 0
Я бегу Ирсси. Я использую тот же файл конфигурации, что и на моем другом сервере, где все работает нормально. Я не могу попробовать кошку сейчас, но сделаю это завтра, когда вернусь в лабораторию. meneldal 9 лет назад 0
С помощью cat я получаю текстовый файл, который могу читать как в Linux, так и в Windows. Notepad ++ говорит, что он закодирован в UTF-8 без спецификации. Родной блокнот тоже нормально открывает. Документы, которые я создаю с помощью `nano`, также используют эту кодировку. meneldal 9 лет назад 0
Так что ваш терминал работает нормально, но Ирсси странно интерпретирует вещи. Не могли бы вы проверить, что выводит `/ exec locale`, а также` / set charset` и `/ set recode`? grawity 9 лет назад 0
Я получаю `LANG = ja_JP.UTF-8` (и другие строки такие же,` LC_ALL` не установлен), `term_charset = utf-8` и` recode_out_default_charset = ISO-8859-15` и для последней ` recode = ON recode_autodetect_utf8 = ON recode_fallback = ISO-8859-15 recode_out_default_charset = ISO-8859-15 recode_transliterate = ON` meneldal 9 лет назад 1
Кстати, с тех пор как я заметил, что вместо LANG = ja_JP.utf8 `у меня было` LANG = ja_JP.UTF-8`, я снова вышел из этой консоли, полностью вышел из системы, так что теперь это также `LANG = ja_JP.utf8`, но все еще нет за работой. Я правильно вижу свое собственное сообщение, но люди не получают его правильно, в то время как сообщения, которые другие люди отправляют мне, работают нормально (на самом деле я тестирую, отправляя сообщения с моего другого сервера, включая символы, отсутствующие в ShiftJS или eucJP) meneldal 9 лет назад 0
Скорее всего, это вызвано тем, что `recode_out_default_charset` говорит Irssi преобразовать все в ISO-8859-15. Исправьте эту настройку. grawity 9 лет назад 0
Что я должен поставить вместо этого? Я использую рекомендуемые настройки из часто задаваемых вопросов irssi, поэтому я предполагаю, что это должно работать. meneldal 9 лет назад 0
Э-э, `UTF-8`, что еще. grawity 9 лет назад 0
Спасибо, что это решает проблему irssi. Я уверен, что я вставил настройки из того же места, хотя meneldal 9 лет назад 0

1 ответ на вопрос

1
grawity

Как было определено в комментариях, Irssi был настроен на преобразование сообщений в ISO-8859-15 при их отправке вместо UTF-8.

Измените выходную кодировку, используя:

/set recode_out_default_charset UTF-8 

Также, если вы находитесь в каналах со смешанной кодировкой, это /set recode_fallback Shift-JISможет быть полезно (это изменяет декодирование полученного сообщения). Irssi всегда будет сначала пытаться использовать UTF-8, но если декодирование завершится неудачно, он будет использовать recode_fallback затем.

Спасибо за исправление irssi, но я все еще не понимаю, почему имена файлов не работают между Linux и Windows. meneldal 9 лет назад 0
Это отдельная программа, и, вероятно, она должна быть в отдельном вопросе ... Это также зависит от того, какой протокол Windows и Linux используют для доступа к этому общему диску. (NFS? SMB / CIFS? AFS?) grawity 9 лет назад 0
Я отредактирую свой вопрос соответственно, чтобы спросить только о IRC, и тогда сделаю новый для этого. Использование японской Windows заставит меня потратить некоторое время на поиск этой информации. meneldal 9 лет назад 0
Также оказалось, что я не правильно прочитал веб-сайт (в ссылке), так как он действительно сказал, что он будет использовать `ISO-8859-15` по умолчанию для всех окон. Я просто не думал, что это пришло отсюда, потому что мне потребовалось некоторое время, чтобы все исправить, чтобы получить любое отображение японских символов в консоли. meneldal 9 лет назад 0

Похожие вопросы