如何检查文件/内容是否有乱码?

时间:2015-01-09 07:14:01

标签: java html

我遇到了一个过滤器的问题,该过滤器将我上传的html内容的某些字符转换为乱码内容。它在升级到该过滤器的最新版本时发生。

我想添加一个单元测试用例来检查过滤后的内容是否有任何乱码。

我搜索了一个解决方案。我找不到一个。

有办法吗?

1 个答案:

答案 0 :(得分:1)

在x中有“乱码”字符,它没有乱码:它是U + FFFD REPLACEMENT CHARACTER字符,如果它不能解码某些UTF-8(或任何其他)编码,则由SW使用。要检查,请使用以下内容:

String x = "蛯" + (char)0xFFFD + "閠test";
System.out.println( "cpc=" + x.codePointCount(0,x.length()) );
for( int i = 0; i < x.length(); ++i ){
    if( (int)x.codePointAt(i) == 0xfffD ){
    System.out.println( "oops" );
    } else {
    System.out.println( x.codePointAt(i) );
    }
}

所有常用的字符串测试方法都有效:

String gc = "" + (char)0xfffD;
if( x.contains( gc ) ){
    System.out.println( "contains" );
}
if( x.matches( ".*"+gc+".*" ) ){
    System.out.println( "matches" );
}
if( x.indexOf( gc ) > -1 ){
    System.out.println( "indexOf" );
}

如果您使用的是Unix系统,即使这样做也会这样做:

grep '�' garbled.data