字符串中空格的坑

空格的类型

  1. 编码32的空格,就是我正常输入的中英文空格,数据库里的空格一般也是这个。
  2. 网页上的NBSP空格,这是编码格式为-62,-96,感觉应该是和网页上的空格有关,也可能和编码方式有关。

错误记录:

  1. 在查询数据库时候,你会发现两个字符串一模一样,但是匹配不到,自然你也就查询不出数据
    在字符串使用NBSP空格时候,查询结果
    在这里插入图片描述
    用sql语句查询也是一样的结果,
  2. 正常空格的查询结果:
    在这里插入图片描述
    就能够查询出来

问题解决

一开始以为是匹配的语句也错了,但是发现并没有错,就把客户发来的数据拿去数据查询,一查吓一跳,找不到,但是的的确确这个公司是存在的。基本确定是字符串里存在不可见字符。比如但是程序里我是对不可见字符,进行了一些处理的。
于是我就把数据库里的字符串复制出来,再把客户的拿来比较了一下,结果如下:在这里插入图片描述
这就很骚气了,基本确定是空格问题了,进行替换,但是网页上的空格打不出来,也不知道客户怎么打出来的,替换代码如下:


    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版权协议,转载请附上原文出处链接和本声明。