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: •