美文网首页
字符串 65279

字符串 65279

作者: 帮我的鸵鸟盖个章 | 来源:发表于2020-06-19 11:33 被阅读0次

    今天碰到一个大坑,接口传过来一个字符串 str= "1",使用"1".equals(str)判断,本以为返回true,结果一直是false。后来将接口改为传过来的字符串为str = "",再进行判空,结果为非空。这就奇怪了~
    其实在debug的时候已经注意到了 str = ""hash65279,并不是0,后面注意到了,就去百度了一下 65279,结果发现是空字符串前面其实有一串编码标识,但是单凭眼睛看是看不到的~

    原因可能是写接口的时候这些参数是从编译器复制过来的,某些编辑器会往utf8文件中添加utf8标记(editplus称其为签名),它会在文件开始的地方插入三个不可见的字符(0xEF 0xBB 0xBF,即BOM),它的表示的是Unicode 标记(BOM)。

    解决办法就是把这个Unicode标记去掉。

    String str = ""; // 此时为前面有Unicode标记
    boolean flag1 = StringUtils.isBlank(str); // false
    if(str.charAt(0) == 65279){
        str = str.substring(0); // 此时去掉了Unicode标记
    }
    
    boolean flag2 = StringUtils.isBlank(str); // true
    

    需要记住的是65279这个数字,看到的时候要保持敏感性~

    相关文章

      网友评论

          本文标题:字符串 65279

          本文链接:https://www.haomeiwen.com/subject/rqdvxktx.html