Java文本输出中的UTF-8编码问题

我一直在为高棉版Unicode破解者测试各种解决方案(高棉语之间没有空格,这使得拼写检查和语法检查变得困难,以及从传统的高棉语转换为高棉语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社区为您提供的所有帮助 – 我希望很快找到解决方案!

当系统编码配置为UTF-8时,我注意到它可以正常工作:

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

也许假设输入文件是系统编码。 阅读评论中提到的BalusC的post ,了解如何独立于系统编码执行输入/输出。