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

5
我正在处理一个1GB的JSON文本文件,我想用Java解析它。然而,解析器抛出了一个异常,因为它遇到了字符 'ñ',导致了以下异常:

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

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


1
我相信你的文件是使用latin1编码,而不是utf8。 - Daenyth
在Java中,要指定Latin1,请使用iso-8859-1作为编码进行添加。 - jontro
2个回答

5

您的文件未使用UTF-8编码。

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

如果您不知道编码,建议您尝试几个可能的编码:请参见Charsets


2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接