IDEA在页面中出现 [NBSP](如下图),也可能是只有几个页面,或者是一个页面中的某些位置出现该问题。这是因为IDEA解析了一些特殊的字符(有时是多写了某个字符导致出现该问题)。虽然这个问题对程序没有影响,但是在视觉上影响还是比较大的。
原因:
导致该原因一般是从网上复制粘贴,或者从其他地方复制粘贴出现的该现像,这种字符在有的编辑器里看似空格,其实跟空格是有点区别的。
分析NBSP与空格区别
文档第一行开头使用单引号包裹了3个NBSP
特殊字符(从其他地方拷贝过来,暂未研究是怎么使用键盘直接敲出来,在Hex下输入c2a0)
为了方便区分,文件内添加了其他一些字符。
文档第三行使用单引号包裹了3个正常的空格。
下面两张图分别是NodePad++下普通视图与Hex视图。
可以看出,在普通视图下NBSP
特殊字符显示与空格并不不同,但在Hex视图下有明显区别。
Hex视图中单引号是27(红色,绿色),三个空格(20)蓝色标出。
而特殊符号NBSP
则是 `c2a0`。因此可以得出NBSP与普通空格视觉上一致,但实际编码是不一样的。
C2A0是什么?
UTF-8 中有一些特殊的不可见字符,常见的空格编码是 0x20(SPACE),而这儿遇到的空格编码则是 0xC2A0(NO-BREAK SPACE)
Unicode code point | characcter | UTF-8(hex) | name |
---|---|---|---|
U+0020 | 20 | SPACE | |
U+00A0 | c2 a0 | NO-BREAK SPACE |
其来源是网页控制的特殊字符,用于阻止在此处自动换行和阻止多个空格被压缩成一个。如 
;我们如果不想空格被压缩,可以使用此字符。
C2A0是UTF8里的排版用的空格(这个空格是与ASCII、unicode中的空格是不一样的;ASCII中的空格编码是20,unicode中的空格是0xA0),但是这个特殊的字符,不在GBK字符集中。却频繁用于xml/html等格式的文件中。大量UTF-编码的网页使用这个字符用作占位的空格。而且不同浏览器对它的处理方式不同:IE浏览器识别出该符号并以空格显示,chrome、firefox则替换为xml转义字符 。
解决方法
IDEA 版本本人使用的2021.3;(2020.2 以后的版本好像都可以使用这个方法)
方法一:(一劳永逸)
全局查找替换
按下ctrl + shift + r
进行全局替换
把NBSP,那个区域的NBSP
字符复制到上面,下面填写普通空格,选定范围进行替换即可
方法二:(视觉上消失)
操作:Setting->Advanced Settings->
取消Render special characters,such as control codes, using their Unicode name abbreviations
勾选
确定应用后页面展示【NBSP】就消失了!