[短文]不同空白字符导致程序执行失败问题

屏幕显示的一个空白字符,对于编程者来说,并无差异,但底层截然不同的表示方法,极大可能导致程序执行失败!

今天博主就遇到一个空格字符的问题,大概情况是前端编写SQL传入,后端有时可以执行,有时无法执行,经过复现和测试,最终发现问题并解决。具体过程不表,我们做一个测试,来探究不同字符对程序的影响。

调用接口
这是使用PostMan调用接口时传入的一个参数,可以看见,虽然显示的是空白字符,但编辑器已经智能提示了这两种空白字符是有区别的,我们把它复制到IDEA打印输出查看。
IDEA查看

虽然将代码复制到IDEA后,编辑器也会区别显示,但从输出结果来看,肉眼完全无法分辨。也就导致,从日志来看,SQL代码和后端接受的参数没有问题,但程序无法执行的问题。
异常问题

解决办法: NBSP的Ascii码是160,我们可以依照这个特性,将它替换为常规空格。
str1.replaceAll(String.valueOf((char) 160)," ");

猜你喜欢

转载自blog.csdn.net/qq_44491709/article/details/127748113