2016-08-01 50 views
1

我有两个相同的字符串在JavaScript与一些空格。当我通过使用str.charCodeAt(n)打印ascii值时,它显示的值为32和160.我搜索了这些值,它将我展示为破坏和非破坏空间。那么任何人都可以解释这是什么行为。打破和不打破空间ASCII字符之间的差异

+0

你能不能给我们一个样本你使用过的2个字符串? – Mistalis

+0

为什么会有java标签? – Blobonat

+0

要点思考:'charCodeAt'为您提供了一个UTF-16代码单元,其中一个或两个编码了一个Unicode代码点。 ASCII字符集没有不间断的空格字符(但没关系,如果您使用的是JavaScript,Java,.NET,HTML,XML ......,那么您可能不使用ASCII。) –

回答

1

正常(中断)空间和非中断空间之间的区别在于文本显示和排版软件不应插入自动换行符来代替非中断空间。 (就好像非破坏空间将它之前和之后的单词连接成一个不可分隔的单词)。相比之下,一个常规空间被视为可能破坏一条线的地方。

话虽如此,代码160实际上是在常规(7位)ASCII范围之外。将160解释为非破坏性空间(或NBSP)字符来自Latin1(ISO8859-1)字符集。 (在扩展ASCII,对于NBSP字符的代码是255!)

参考文献:

2

非破坏性空间是一个不会闯入新行的空间。 由不分隔空格分隔的两个词将粘在一起,而不会分成新行。

另一方面打破空间将打破。