2字节UTF-8序列的字节2无效:如何查找字符

时间:2015-04-09 17:20:29

标签: java regex utf-8

我的Windows机器上有一个UTF-8编码的大文本文件。不知何故,此文件中的一个或多个字符对UTF-8编码无效,错误为“2字节UTF-8序列的无效字节2”。

我正在使用Windows 7,我想找到无效的字符。我想有一个UNIX命令,但有没有任何工具或实用程序或正则表达式(不需要编写程序/代码)可以在Windows中使用。

我可以使用notepad ++或PSPAD或类似的文本编辑器,或者如果有任何Windows命令,我可以创建一个批处理文件。请建议。

2 个答案:

答案 0 :(得分:0)

创建FileReader以逐字节读取文件。如果当前字节看起来像是2字节UTF-8中的第一个,则读取下一个字节,将两个放在byte [2]数组中,并将其赋予新的String(数组,“UTF-8”)。在循环中,计算读取的字节数,并捕获异常以生成位置和字节值。

答案 1 :(得分:0)

您的UTF-8文件可能包含字节顺序标记,Java读者通常无法识别。

在Notepad ++中打开文件。如果文件有BOM,Notepad ++将报告“UTF-8”而不是“UTF-8没有BOM”。

您可以在没有BOM的情况下转换为UTF-8,也可以使用以下内容:https://stackoverflow.com/a/2905038/1554386来剥离BOM。