Поддерживает ли String.fromCharCode (десятичное значение) в JavaScript также расширенные символы - PullRequest
1 голос
/ 17 июня 2010

Я использую функцию String.fromCharCode (десятичное значение) и передаю ей десятичное значение.

работает нормально с английскими символами, но когда я пытаюсь декодировать то же самое для японских символов, он дает мне несколько произвольных символов.

может кто-нибудь сказать мне, поддерживает ли String.fromCharCode (десятичное значение) расширенные символы.

1 Ответ

0 голосов
/ 17 июня 2010

Нет, он не поддерживает символы, которые используют два суррогата. MDC имеет служебную функцию, предназначенную для этого:

// String.fromCharCode() alone cannot get the character at such a high code point
// The following, on the other hand, can return a 4-byte character as well as the 
//   usual 2-byte ones (i.e., it can return a single character which actually has 
//   a string length of 2 instead of 1!)
alert(fixedFromCharCode(0x2F804)); // or 194564 in decimal

function fixedFromCharCode (codePt) {
    if (codePt > 0xFFFF) {
        codePt -= 0x10000;
        return String.fromCharCode(0xD800 + (codePt >> 10), 0xDC00 +
(codePt & 0x3FF));
    }
    else {
        return String.fromCharCode(codePt);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...