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

标签 java html

我遇到了一个过滤器问题,该过滤器将我上传的 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/

相关文章:

java - 使用 Java 登录 Jboss 7.1.1 Final 管理控制台

java - 模拟 Autowiring 的 bean 会抛出 NullPointerException

javascript - 检索要在标题文本中使用的 anchor 文本

javascript - 如何在 HTML5 canvas 上绘图时得到平滑的曲线?

java - 在play框架2.4中添加新的Mongo模块

java - 如何理解java Socket-Permissions?

java - 创建 bash 别名来编译当前目录中的任何 .java 程序

html - 用曲线制作div?

html - 在媒体查询中使用很棒的字体

php - 将访问者提交的数据附加到页面