Проблема кодирования UTF-8 в текстовом выводе Java - PullRequest
2 голосов
/ 03 февраля 2011

Я работал над тестированием различных решений для кхмерского Unicode Wordbreaker (кхмерский язык не имеет пробелов между словами, что затрудняет проверку орфографии и грамматическую проверку, а также преобразование из прежнего кхмерского в кхмерский Unicode).

Мне дали некоторый исходный код, который сейчас в сети (http://www.whitemagicsoftware.com/software/java/wordsplit/), который кажется многообещающим. Автор был достаточно любезен, чтобы привести источник, но он очень занят написанием книги и не может найти и устранить неисправность.

Я тестирую код в очень маленьком масштабе, и у меня возникают проблемы с выводом.

Вот входные данные:

ជា ដែល នឹង បាន មាន

Вот результат:

ជា រ ល នឹង បាន មាន, ជា រ ល នឹង បាន មាន

Слова на самом деле разделены правильно, но одно слово перемешано. Вывод должен выглядеть так:

ជា ដែល នឹង បាន មាន, ជា ដែល នឹង បាន មាន

Кто-нибудь понимает, почему вывод искажен?

Вот код с очень маленьким кхмерским лексиконом и словами, которые нужно разделить: http://www.sbbic.org/khmerwordsplit.zip

А вот как это запустить:

java -jar wordsplit.jar khmerlexicon.csv khmercolumns.txt >> results.txt

Я очень благодарен сообществу stackoverflow за всю помощь, которую вы оказали в этом проекте до сих пор - я надеюсь, что решение скоро будет найдено!

1 Ответ

2 голосов
/ 03 февраля 2011

Я заметил, что это работает правильно, когда системная кодировка настроена как UTF-8:

java -Dfile.encoding=UTF-8 -jar wordsplit.jar khmerlexicon.csv khmercolumns.txt >> results.txt

Возможно, предполагается, что входной файл находится в системной кодировке. Прочтите сообщение BalusC, упомянутое в комментариях , чтобы увидеть, как выполнять ввод / вывод независимо от системного кодирования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...