屏幕显示的一个空白字符,对于编程者来说,并无差异,但底层截然不同的表示方法,极大可能导致程序执行失败!
今天博主就遇到一个空格字符的问题,大概情况是前端编写SQL传入,后端有时可以执行,有时无法执行,经过复现和测试,最终发现问题并解决。具体过程不表,我们做一个测试,来探究不同字符对程序的影响。
这是使用PostMan调用接口时传入的一个参数,可以看见,虽然显示的是空白字符,但编辑器已经智能提示了这两种空白字符是有区别的,我们把它复制到IDEA打印输出查看。
虽然将代码复制到IDEA后,编辑器也会区别显示,但从输出结果来看,肉眼完全无法分辨。也就导致,从日志来看,SQL代码和后端接受的参数没有问题,但程序无法执行的问题。
解决办法: NBSP的Ascii码是160,我们可以依照这个特性,将它替换为常规空格。
str1.replaceAll(String.valueOf((char) 160)," ");