#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