Как отобразить японские символы в терминале Mac OS X?

#macos #unicode #localization #character-encoding #lexical-analysis

#macos #Юникод #локализация #кодировка символов #лексический анализ

Вопрос:

Итак, я запускаю MeCab (http://mecab.sourceforge.net/#download ) для сегментирования слов и морфо-анализа японских предложений. Однако, когда я запускаю программу, я вижу абракадабру из-за некоторых проблем с кодировкой в терминале Mac OS X. Я погуглил тему, добавил опцию Dfile.encoding, добавил следующие 3 строки в .inputrc:

 set convert-meta off
set meta-flag on
set output-meta on
  

Ничего не работает. Есть идеи, как отобразить японские символы в терминале Mac OS X? Вот результат запуска программы test.java:

 env DYLD_LIBRARY_PATH=. /usr/bin/java -Dfile.encoding=utf-8 test
0.98pre3
å¤  ̾»ì,°ìÈÌ,*,*,*,*,*
ª郎ã µ­¹æ,°ìÈÌ,*,*,*,*,*
¯ä  ̾»ì,¸Çͭ̾»ì,Áȿ¥,*,*,*,*
º郎にこのæ  µ­¹æ,°ìÈÌ,*,*,*,*,*
¬ã  ̾»ì,¥µÊÑÀܳ,*,*,*,*,*
    µ­¹æ,°ìÈÌ,*,*,*,*,*
æ¸  ̾»ì,°ìÈÌ,*,*,*,*,*
¡ã  µ­¹æ,³ç
    BOS/EOS,*,*,*,*,*,*,*,*
å   ̾»ì,°ìÈÌ,*,*,*,*
ª郎  µ­¹æ,°ìÈÌ,*,*,*
¯   ̾»ì,¸Çͭ̾»ì,Áȿ¥,*,*
º郎にこ    µ­¹æ,°ìÈÌ,*,*,*
¬   ̾»ì,¥µÊÑÀܳ,*,*,*,
    µ­¹æ,°ìÈÌ,*,*,*
æ   ̾»ì,°ìÈÌ,*,*,*,*
¡   µ­¹æ,³ç¸̳«,*,*,*,*
    µ­¹æ,°ìÈÌ,*,*,*
    BOS/EOS,*,*,*,*,*,*,*,*
EOS
  

Комментарии:

1. Какой результат получается при выполнении следующей команды: ‘mecab -D’

2. Я удивлен, что это не работает. У меня есть текстовый файл в формате UTF-8 (сохраненный из TextEdit) с текстом на японском языке — file myfile.txt возвращает UTF-8 Unicode English text (ну, достаточно близко!) — и если я cat myfile.txt скажу, что он выглядит идеально в терминале. Если вы передадите это в hexdump , получите ли вы ожидаемые байты UTF-8?

3. Да, на самом деле одна из причин, по которой я купил Mac, заключалась в том, что он мог печатать японские символы на терминале без необходимости что-либо делать (по сравнению с Windows, где это было буквально невозможно без радикальных изменений), тот факт, что в тексте выше есть несколько японских символов, доказывает, что этот аспект технически работает — скорее всего, что-то еще в процессе портит именно то, что напечатано

Ответ №1:

Я бы подумал, что это настройка по умолчанию, но вы могли бы попробовать выбрать «Unicode (UTF-8)» в качестве кодировки символов в Настройках …, Настройках, Расширенных, Международных. Если это уже установлено, вы можете подтвердить, что выходные данные вашей программы действительно закодированы в UTF-8. Это может быть Shift-JIS, EUC или даже UTF-16? В таком случае попробуйте включить эти кодировки в Настройках …, Encodings.

Ответ №2:

После этого

 % cd mecab-ipadic-2.7.0-xxxx
% ./configure --with-charset=utf8
% sudo make
% sudo make install
  

вывод ‘mecab -D’ равен

 % cd mecab-java-0.98pre3
% mecab -D
filename:    /usr/local/lib/mecab/dic/ipadic/sys.dic
version:    102
charset:    utf8
type:    0
size:    392126
left size:    1316
right size:    1316
  

Вот результат запуска тестовой программы.

 bash-3.2$ env DYLD_LIBRARY_PATH=. /usr/bin/java test
0.98pre3
??    ??,????,??,?,*,*,??,???,???
?    ??,???,*,*,*,*,?,?,?
??    ??,????,??,?,*,*,??,???,???
?    ??,???,??,*,*,*,?,?,?
??    ???,*,*,*,*,*,??,??,??
?    ??,??,*,*,*,*,?,??,??
?    ??,???,??,*,*,*,?,?,?
??    ??,??,*,*,?????,???,??,???,???
?    ???,*,*,*,????,???,?,?,?
?    ??,??,*,*,*,*,?,?,?
EOS

    BOS/EOS,*,*,*,*,*,*,*,*
??    ??,????,??,?,*,*,??,???,???
?    ??,???,*,*,*,*,?,?,?
??    ??,????,??,?,*,*,??,???,???
?    ??,???,??,*,*,*,?,?,?
??    ???,*,*,*,*,*,??,??,??
?    ??,??,*,*,*,*,?,??,??
?    ??,???,??,*,*,*,?,?,?
??    ??,??,*,*,?????,???,??,???,???
?    ???,*,*,*,????,???,?,?,?
?    ??,??,*,*,*,*,?,?,?
    BOS/EOS,*,*,*,*,*,*,*,*
EOS
  

Чего мне не хватает, чтобы заставить кодировку работать?

P / S: все японские кодировки включены в настройках — Кодировки в терминале, кодировка (Настройки — Дополнительно — Международная) в терминале Mac OS X является UTF-8.

Комментарии:

1. Хорошо, наконец-то я вижу японские символы. Спасибо вам, ребята, за помощь! Я бы сам до этого не додумался.

2. Возможно, вы могли бы начать отмечать правильные ответы на свои вопросы? Похоже, многие люди, возможно, помогли вам.

3. @buruzaemon: самым важным шагом было ‘./configure —with-charset=utf8’ в mecab-ipadic. Причина, по которой терминал не печатал японские символы после перенастройки mecab-ipadic, заключается в том, что вместо ‘env DYLD_LIBRARY_PATH = . /usr/bin/java -Dfile.encoding=utf-8 тест ‘Я выполнял’env DYLD_LIBRARY_PATH=. /usr/bin/ java test’. Спасибо вам всем! Теперь, когда я разобрался с частью речи, пришло время перейти к следующему этапу проекта: P