特殊的空格 - ASCII(160)
编程语言-JAVA
1.问题引入
一般, 我们在db中落数据的时候, 都会对String类型的字段做
去空格
处理, 常用的方法无非trim()
.但是
最近在数据库中发现,
name
字段存在空格,在sql语句中使用trim函数,查出来的数据仍然带有空格.引出问题: 特殊的空格–trim函数不能处理的空格
2.trim函数不能处理的空格
不能处理的空格,首先想到的是全角空格,但此次问题不是全角空格
2.1 全角字符
全角字符
不能被trim,- 使用String中的
replace
方法+正则\s
同样不能被替换 - 全角字符占3字节
- ASCII值为12288
2.2 ASCII -160 特殊空格
- 此次空格在ASCII码表中,值为160 ,同样想到的,32也是空格,但是32是普通空格.
- 不能被trim
- 使用String中的
replace
方法+正则\s
同样不能被替换 - 该空格占2个字节
- 该空格为不间断空格(non-breaking space),即前端页面上的
3.如何处理?
上面已经讲过,使用普通的方法,去除不了该空格;
- 针对全角空格,使用replace方法+全角空格字符,直接替换
- 针对160空格,使用replace+UNICODE编码
\u00A0
来替换