我遇到了一个过滤器问题,该过滤器将我上传的 html 内容的某些字符转换为乱码。这是在升级到该过滤器的最新版本时发生的。
我想添加一个单元测试用例来检查过滤后的内容是否有乱码。
我用谷歌搜索了一个解决方案。我找不到。
有办法吗?
最佳答案
在 x 中有一个“乱码”字符,它不是乱码:它是 U+FFFD 替换字符字符,如果 SW 无法解码某些 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
关于java - 如何检查文件/内容是否有乱码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27855599/