2016-08-01 75 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

非破壞性空間是一個不會闖入新行的空間。 由不分隔空格分隔的兩個詞將粘在一起,而不會分成新行。

另一方面打破空間將打破。