嗯,我试着读取一个以ISO-8859-7编码的文本文件,并将其保存在UTF-8中,反之亦然,因为文本文件包含希腊文/拉丁文。我意识到这并不容易(如this question中所述)。
但我也注意到,当我读取以UTF-8编码的文本文件并试图将其保存到ISO-8859-7时,它实际上是按设想工作的(在文本文件中写入可读的字符)。另一方面,当相反的情况是正确的,阅读ISO-8859-7并编写UTF-8,则结果不是预期的结果。
所以,我的问题是,为什么会出现上述情况?我知道我应该遵循question中的方法,所以我不需要一个关于如何使编码工作的答案。这是否与UTF-8定义的字符比ISO-8859-7更多这一事实有关?
我正在使用以下代码来完成这一任务:
BufferedReader reader = BufferedReader(new InputStreamReader(new FileInputStream(file), encoding));
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), encoding));
其中encoding
只是表示编码的String
。
发布于 2015-06-04 20:17:32
你是如何验证它是否有效的?您是否检查了实际写入的字节以确保它们编码了预期的字符?
一个常见的错误是仅仅使用命令行工具来查看内容--这假设工具知道实际的编码,而不仅仅是猜测它是一个特定的编码。具体来说,在您的情况下,它很可能只是默认的ISO-8859-7 (或,-1)查看(或可能是UTF-8),因此该工具错误地从字节中解码字符,给人以失败的印象。
https://stackoverflow.com/questions/30653249
复制相似问题