Wstawianie znaków Unicode

0

Mam pewien problem ze wstawianiem znaków do pola tekstowego w JavaScript. Testowałem na Windows XP i Windows 7, na obu systemach jest Firefox 34.0.5.

Na potrzeby prób dobrałem 3 znaki, pierwszy to znak z plane 0, z którym sa problemy, znak z plane 1, z którym też są problemy i znak z plane 0, z którym nie ma problemu.

Dokonałem parę prób i testów, z których wynika, że najlepiej wstawiają się znaki, jak są na sztywno wklejone do źródła w Notatniku, a źródło zapisano jako UTF-8. Oprócz tego, działa dobrze funkcja "encodeURIComponent", ale do niej trzeba odpowiednio wygenerować tekst, bo musi być w standardzie UTF-8. Funkcja String.fromCharCode dla podanego numeru znaku nie działa poprawnie dla pierwszego i drugiego znaku w obu systemach.

W przypadku Windows 7, przed przyciskiem "Test JS" wszystkie trzy znaki wyświetlają się poprawnie, w przypadku Windows XP jest problem ze znakami z plane 1.

Czy w JavaScript jest funkcja, która poprawnie przekonwertuje numer znaku Unicode na odpowiadający mu znak bez dodatkowych czynności? Jak tego dokonać?

Dlaczego Windows XP nie radzi sobie ze znakami z plane 1? Czy da się to poprawić?

Załączam kod pliku i zrzuty obrazu po kliknięciu przycisku w obu systemach Windows.

<html>
 <head>
  <meta charset="UTF-8" />
 </head>
 <body>
  
  <script type="text/javascript">
   function Test()
   {
    var Kod1 = 149;
    var Kod2 = 128704;
    var Kod3 = 7461;
    var Tekst1 = "";
    var Tekst2 = "";

    Tekst1 += "Kod dziesiętny znaku: " + Kod1 + " " + Kod2 + " " + Kod3 + "\r\n";
    Tekst2 += "Kod dziesiętny znaku: " + Kod1 + " " + Kod2 + " " + Kod3 + "<br />";

    Tekst1 += "Zamiana kodu na znak fromCharCode: " + String.fromCharCode(Kod1) + " " + String.fromCharCode(Kod2) + " " + String.fromCharCode(Kod3) + "\r\n";
    Tekst2 += "Zamiana kodu na znak fromCharCode: " + String.fromCharCode(Kod1) + " " + String.fromCharCode(Kod2) + " " + String.fromCharCode(Kod3) + "<br />";

    Tekst1 += "Znak wklejony na sztywno do kodu JavaScript: • 
0

Piszę post za postem, bo jak robię "Edytuj", to obcina się część postu, pewnie przez znaki Unicode w załączonym kodzie.

Zauważyłem, że znak o numerze 149 (wykorzystany w przytoczonym kodzie) wklejony bezpośrednio jest widziany jako znak o numerze 8226. Co jest tego przyczyną?

1 użytkowników online, w tym zalogowanych: 0, gości: 1