2012-10-05 12 views
5

Niektóre sekwencje bajtów są najwyraźniej nieprawidłowe w kodowaniu Unicode i wiem, że niektóre języki (Python dla jednego) powodują błąd, gdy tak się dzieje.Unicode i Javascript: Niepoprawne sekwencje bajtów

Moje pytanie brzmi: co dzieje się w JavaScript podczas odbierania takiej sekwencji podczas XMLHttpRequest lub XDomainRequest? Czy wynikowy ciąg:

  1. Zostanie obcięty, gdy tak się stanie?
  2. Pomiń złą sekwencję i zacznij od następnego bajtu?
  3. Kontynuować dekodowanie i wyświetlać tylko zastępczy znak when, gdy jest wyświetlany?

Jeśli 3, to czy funkcja charCodeAt zwraca prawidłowy kod znaku?

Odpowiedz

4

Numer 3 się dzieje. Wyświetla przy wyświetlaniu, a charCodeAt zwraca 0xFFFD, znak Unicode.

+0

OK, dziękuję, tego właśnie szukałem. Dla przypomnienia, właśnie to potwierdziłem używając [this page] (http://www.cl.cam.ac.uk/~mgk25/ucs/examples/UTF-8-test.txt) i iterując przez 'charCodeAt' wartości. –

+0

Świetne źródło testowania: http://www.cl.cam.ac.uk/~mgk25/ucs/examples/UTF-8-test.txt – saml