从大文本文件中删除非UTF-8字符

时间:2012-06-19 16:26:58

标签: java json utf-8 large-files

我正在研究一个1千字节的JSON文本文件,我正在尝试使用Java进行解析。但是,解析器会抛出异常,因为它会遇到生成此异常的字符“ñ”:

  

异常无效的UTF-8起始字节0x96

我尝试使用sed和perl删除该字符,但似乎它们无法读取该字符,因此文件保持不变。我想从整个文件中删除该字符或将其替换为任何其他字符或字符串,以便解析工作。

2 个答案:

答案 0 :(得分:5)

您的文件未以UTF-8编码。

您应该找到编码并使用此编码来使用InputStreamReader读取文件。然后如果需要在UTF-8中保存它(例如使用OutputStreamWriter)。

如果您不知道编码,我建议您使用一些可能的编码进行测试:请参阅Charsets

答案 1 :(得分:2)

是的,它可能不是UTF-8,请参阅此处,了解有关如何检查编码的一些信息:Java : How to determine the correct charset encoding of a stream

最好的回答似乎指向InputStreamReader#getEncoding()