空格的类型
- 编码32的空格,就是我正常输入的中英文空格,数据库里的空格一般也是这个。
- 网页上的NBSP空格,这是编码格式为-62,-96,感觉应该是和网页上的空格有关,也可能和编码方式有关。
错误记录:
- 在查询数据库时候,你会发现两个字符串一模一样,但是匹配不到,自然你也就查询不出数据
在字符串使用NBSP空格时候,查询结果
用sql语句查询也是一样的结果, - 正常空格的查询结果:
就能够查询出来
问题解决
一开始以为是匹配的语句也错了,但是发现并没有错,就把客户发来的数据拿去数据查询,一查吓一跳,找不到,但是的的确确这个公司是存在的。基本确定是字符串里存在不可见字符。比如但是程序里我是对不可见字符,进行了一些处理的。
于是我就把数据库里的字符串复制出来,再把客户的拿来比较了一下,结果如下:
这就很骚气了,基本确定是空格问题了,进行替换,但是网页上的空格打不出来,也不知道客户怎么打出来的,替换代码如下:
public static void main(String[] args) {
String name1 = "AISA AIRFREIGHT TERMINAL COMPANY LIMITED";
log.info("原先的:{}",Arrays.toString(name1.getBytes()));
log.info(name1);
String name2 = name1.replace(" "," ");
log.info("替换后的:{}",Arrays.toString(name2.getBytes()));
log.info(name2);
if (name2.equals(name1)){
log.info("两个字符串是一样的");
}
空格替换空格,看着很魔性,但的的确确两个不一样的空格,这也给了一些启发,两个字符串的比较实际上是编码的比较,打印二进制编码,可以很好的找到这些不可见字符的差异
版权声明:本文为weixin_44632065原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。