2016-08-01 4 views
1

Ich habe zwei identische Zeichenfolgen in Javascript mit einigen Leerzeichen. Als ich die ASCII-Werte unter Verwendung str.charCodeAt(n) druckte, zeigt es die Werte als 32 und 160 an. Ich googled die Werte und es zeigt mich als brechende und nicht brechende Räume an. Kann jemand erklären, was dieses Verhalten ist?Unterschied zwischen brechenden und nicht brechenden Leerzeichen ascii Zeichen

+0

Können Sie uns eine Probe von den 2 Saiten, die du benutzt hast? – Mistalis

+0

Warum gibt es ein Java-Tag? – Blobonat

+0

Punkte zum Nachdenken: 'charCodeAt' gibt Ihnen eine UTF-16-Code-Einheit, von der eine oder zwei einen Unicode-Codepunkt codieren. Der ASCII-Zeichensatz hat kein Leerzeichen, das nicht bricht (aber das ist in Ordnung, wenn Sie JavaScript, Java, .NET, HTML, XML, ... verwenden, verwenden Sie wahrscheinlich kein ASCII.) –

Antwort

1

Der Unterschied zwischen einem normalen (brechenden) Leerzeichen und einem nicht brechenden Leerzeichen besteht darin, dass Textanzeige- und Textsatzsoftware keinen automatischen Zeilenumbruch anstelle eines fehlerfreien Leerzeichen einfügen sollte. (Es ist so, als ob das nicht-brechende Leerzeichen die Wörter vor und nach ihm zu einem nicht aufteilbaren Wort verbindet.) Im Gegensatz dazu wird ein regulärer Raum als möglicher Ort behandelt, um eine Linie zu brechen.

Mit diesen Worten ist der Code 160 tatsächlich außerhalb des Bereichs der regulären (7-Bit) ASCII. Die Interpretation von 160 als nicht brechendes Leerzeichen (oder NBSP) Zeichen stammt aus dem Zeichensatz Latin1 (ISO8859-1). (In erweiterten ASCII, der Code für den NBSP Charakter ist 255!)

Referenzen:

2

Ein brechungsfreier Raum ist ein Raum, der nicht in eine neue Linie einbricht. Zwei Wörter, die durch ein nicht brechendes Leerzeichen getrennt sind, bleiben zusammen und brechen nicht in eine neue Zeile ein.

Brechen von Räumen auf der anderen Seite wird brechen.

Verwandte Themen