断字空格和非断字空格ASCII字符的区别

4

我在javascript中有两个相同的字符串,其中有些空格。当我使用str.charCodeAt(n)打印ascii值时,它显示的值为32和160。我谷歌了一下这些值,发现它们是代表断开和不间断空格。那么有人能解释一下这种行为吗?


你能给我们展示你使用的两个字符串的示例吗? - Mistalis
为什么有Java标签? - CloudPotato
需要注意的是:charCodeAt 方法会返回一个 UTF-16 编码单元,其中一个或两个编码单元可以表示一个 Unicode 码点。ASCII 字符集中没有不间断空格字符(但如果你使用 JavaScript、Java、.NET、HTML、XML 等技术,那么你可能并不使用 ASCII)。 - Tom Blodget
2个回答

7
普通(断开)空格和不间断空格之间的区别在于,文本显示和排版软件不应该在不间断空格处插入自动换行符。(就好像不间断空格将其前后的单词连接成一个不可分割的单词。)相比之下,常规空格被视为可能换行的位置。
话虽如此,代码160实际上超出了常规(7位)ASCII的范围。160作为不间断空格(或NBSP)字符的解释来自Latin1(ISO8859-1)字符集。(在扩展ASCII中,NBSP字符的代码是255!)
参考资料:

太棒了!在输入textarea时,你可以使用Alt255来强制在类似于项目符号(Alt789)之前添加前导空格。否则,浏览器将不会显示前导空格或尾随空格。然而,一些Web应用程序实现了trim()或类似的技术,以便删除或不显示前导、尾随、重复或\n空格字符。 - Abel Wenning

2

非断行空格是指不会在新的一行中换行的空格。 两个由非断行空格分隔的单词将粘在一起,不会被分开到新的一行。

另一方面,断行空格会导致分行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接