我在 javascript 中有两个相同的字符串,其中有一些空格。当我使用
str.charCodeAt(n)
打印 ascii 值时,它显示的值为 32 和 160。我用 google 搜索了这些值,它显示为断行空格和非断行空格。那么任何人都可以解释一下这种行为是什么吗?
正常(换行)空格和不间断空格之间的区别在于,文本显示和排版软件不应插入自动换行符来代替不间断空格。 (就好像不间断空格将其前后的单词连接成一个不可分割的单词。)相比之下,常规空格被视为可能断行的位置。
话虽如此,代码
160
实际上超出了常规(7 位)ASCII 的范围。 160
作为不间断空格(或 NBSP
)字符的解释来自 Latin1 (ISO8859-1) 字符集。 (在扩展 ASCII 中,NBSP
字符的代码是 255
!)
参考资料:
不间断空格是不会换行的空格。 由不间断空格分隔的两个单词将粘在一起并且不会换行。
另一方面,打破空格会打破。
有趣的事实:对空格进行操作的 SQL 函数(例如 LTRIM())仅对分隔空格进行操作,而不对不间断空格进行操作。为了让它们处理您的字符串(例如,如果您导入有人使用不间断空格的数据),您需要首先将它们转换为中断空格。