Mam wrażenie, że interpreter JavaScript zakłada, że kod źródłowy, który interpretuje, został już znormalizowany. Co dokładnie normalizuje? Nie może to być edytor tekstu, w przeciwnym razie tekstowa reprezentacja źródła będzie się zmieniać. Czy istnieje jakiś "preprocesor", który dokonuje normalizacji?Normalizacja JavaScript Unicode
Odpowiedz
Nie, nie istnieje żadna funkcja normalizacji Unicode używana automatycznie, lub nawet dostępna dla JavaScript, jak w ECMAScript 5. Wszystkie znaki pozostają niezmienione jako oryginalne punkty kodu, potencjalnie w formie nienormalnej.
np try:
<script type="text/javascript">
var a= 'café'; // caf\u00E9
var b= 'café'; // cafe\u0301
alert(a+' '+a.length); // café 4
alert(b+' '+b.length); // café 5
alert(a==b); // false
</script>
Aktualizacja:ECMAScript 6 will introduce Unicode normalization for JavaScript strings.
Należy podkreślić, że JavaScript * PREDATE * UTF-16 i faktycznie naraża UCS-2. (To, czego używa wewnętrznie, może, ale nie musi, być UTF-16, ale wyrzuca UCS-2.) –
Jeśli używasz node.js
, istnieje unorm
biblioteka dla tego produktu.
To działa w chromie przynajmniej tak samo – jontro
ECMAScript 6 wprowadza String.prototype.normalize()
który dba o normalizacji Unicode dla Ciebie.
unorm to polyfill w języku JavaScript dla tej metody, dzięki czemu można już dziś używać String.prototype.normalize()
, mimo że w danym momencie nie obsługuje go pojedynczy silnik.
Aby uzyskać więcej informacji o tym, jak i kiedy używać normalizacji Unicode w JavaScript, zobacz JavaScript has a Unicode problem – Accounting for lookalikes.
zaktualizowałem odpowiedź @bobince „s
var cafe4= 'caf\u00E9';
var cafe5= 'cafe\u0301';
console.log (
cafe4+' '+cafe4.length, // café 4
cafe5+' '+cafe5.length, // café 5
cafe4 === cafe5, // false
cafe4.normalize() === cafe5.normalize() // true
);
- 1. javascript sort z unicode
- 2. Wstaw kod Unicode do JavaScript
- 3. Normalizacja MinMax w scala
- 4. Python i charakter normalizacja
- 5. Normalizacja h/w
- 6. Normalizacja bazy danych MySQL
- 7. Normalizacja w MySQL
- 8. Python unicode normalizacja: czy jest to poprawna przetłumaczyć u '\ XB4' U”\ u0301'
- 9. Normalizacja adresu IPv4 w inet_aton
- 10. Normalizacja obiektu zdarzenia Cross Browser?
- 11. Standardowa normalizacja adresów URL - Java
- 12. Normalizacja wsadowa zamiast normalizacji wejścia
- 13. Normalizacja kwantyli na pandach DataFame
- 14. JavaScript mecz i zamień na unicode
- 15. Unicode i Javascript: Niepoprawne sekwencje bajtów
- 16. JavaScript realizacja UAX 29 Segmentacja tekstu Unicode?
- 17. Kod JavaScript z podwójną ucieczką Unicode
- 18. Do czego służy normalizacja Java Node?
- 19. Normalizacja SSE wolniejsza od prostej aproksymacji?
- 20. numery Normalizacja telefonu za pomocą wyrażenia regularnego
- 21. Normalizacja baz danych dla systemu zarządzania szkołą
- 22. Normalizacja baz danych - kto ma rację?
- 23. Normalizacja między 0 a 1 ignorując NaN
- 24. Normalizacja danych audio z getByteFrequencyData według wolumenu
- 25. Znak Unicode o symbolu Unicode
- 26. Jak uzyskać szerokość wyświetlania połączonych znaków Unicode w Pythonie 3?
- 27. Drukowanie znaków Unicode PHP
- 28. Unicode w Rhino
- 29. javascript przejść do adresu URL z znaki Unicode
- 30. Znajdowanie nazwy znaków Unicode za pomocą kodu Javascript
Silnik przeglądarka moim zdaniem jest to, co obsługuje go. Właśnie dlatego masz rozbieżności między przeglądarkami, co robią i nie obsługują. – Ryan