Java:检测给定字符编码的不可显示字符

Rob*_* M. 3 java csv validation utf-8 character-encoding

我目前正在开发一个应用程序来验证和解析CSV文件.CSV文件必须以UTF-8编码,尽管有时我们会以错误编码方式获取文件.CSV文件很可能包含德语字母(Ä,Ö,Ü,ß)的特殊字符,因为CSV文件中的大多数文本都是德语.

对于验证器的一部分,我需要确保该文件是UTF-8编码的.只要不存在特殊字符,解析时很可能没有问题.

到目前为止我所尝试的是将文件作为字节读取并使用一些库来检测(或猜测)编码.我尝试了这篇博文的大部分可能性:http://fredeaker.blogspot.com/2007/01/character-encoding-detection.html

但我尝试的所有库都没有返回正确的编码,因此我无法解析特殊字符.

现在问我的问题:有没有办法确定像UTF-8这样的给定字符编码来检测未正确编码的字符?所以基本上(Eclipse)控制台中显示的字符作为问号标记.

或者有没有其他方法来正确确定字符编码?我只需要知道它是否是UTF-8.

提前谢谢大家的帮助!:)

最诚挚的问候,罗伯特

eri*_*son 6

无法正确解码的字节序列将替换为"替换字符",\uFFFD显示如下: .但是,如果输出设备不支持该字符,则可能会使用问号(?).

因此,在将UTF-8数据解码为String对象后,搜索出现的对象\uFFFD.

或者,如果您设置了一个您自己创建InputStreamReader的实例CharsetDecoder,则可以获得更多控制权.例如,您可以指定如果任何无法解码的字节序列,则Exception应该引发.或者你可以忽略它们.或者,您可以指定其他字符作为替换字符.