Как напечатать буквенную строку Unicode в Javascript?

У меня есть массив, содержащий строки со специальными символами Unicode:

var a = [
    ["a", 33],  
    ["h\u016B", 44],
    ["s\u00EF", 51],
    ...
];

Когда я зацикливаюсь на этом массиве:

for (i=0;i<a.length;i++) {
    document.write(a[i][0] + "<br />");
}

Он печатает символы с акцентами:

a
hù
sô
...

и я хочу:

a
h\u016B
s\u00EF
...

Как я могу добиться этого в Javascript?

Ответы на вопрос(4)

Итак, попавший сюда попытался ответить на этот вопрос:Javascript: отображать Unicode как есть но он был закрыт из-за этого вопроса здесь.

Просто еще один ответ на эту проблему: Также возможно (по крайней мере, в некоторых современных браузерах) использоватьString.raw - функция

Синтаксис выглядит так:

var rawStr = String.raw`Hello \u0153`;

Вот рабочая скрипка (Chrome, FF):http://jsfiddle.net/w9L6qgt6/1/

Решение Вопроса

Что-то вроде этого?

/* Creates a uppercase hex number with at least length digits from a given number */
function fixedHex(number, length){
    var str = number.toString(16).toUpperCase();
    while(str.length < length)
        str = "0" + str;
    return str;
}

/* Creates a unicode literal based on the string */    
function unicodeLiteral(str){
    var i;
    var result = "";
    for( i = 0; i < str.length; ++i){
        /* You should probably replace this by an isASCII test */
        if(str.charCodeAt(i) > 126 || str.charCodeAt(i) < 32)
            result += "\\u" + fixedHex(str.charCodeAt(i),4);
        else
            result += str[i];
    }

    return result;
}

var a = [
    ["a", 33],  
    ["h\u016B", 44],
    ["s\u00EF", 51]
];

var i;
for (i=0;i<a.length;i++) {
    document.write(unicodeLiteral(a[i][0]) + "<br />");
}
Result
a
h\u016B
s\u00EF

JSFiddle

 18 февр. 2016 г., 08:03
@ gaurav5430 Который не был предназначен в исходном вопросе. Удалитьif, Обратите внимание, что'\u0050' а также"P" иметь одинаковое представление; Вы не можете проверить,"P" был изначально'\u0050'.
 18 февр. 2016 г., 08:05
@ Зета, если я удалю if, он конвертирует все в юникод
 18 февр. 2016 г., 07:55
Это не будет отображать Unicode, как \ u0050 (который является действительным символом ASCII). Как справиться с этим?
 08 июн. 2012 г., 08:07
@dda: Дох, действительно. тем не мение0x7F это DEL, так0x7E должна быть лучшая верхняя граница. Отредактировал мой ответ, спасибо за замечание :).
 08 июн. 2012 г., 07:10
Хорошее решение, но я думаю, что это должно бытьif(str.charCodeAt(i) > 127) (ASCII останавливается на 0x7F).

если у вас есть символ Unicode, и вы хотите его в виде строки, вы можете сделать это

x = "h\u016B";
// here the unicode is the second char
uniChar = x.charCodeAt(1).toString(16); // 16b
uniChar = uniChar.toUpperCase(); // it is now 16B
uniChar = "\\u0" + uniChar; // it is now \\u016B
x = x.charAt(0) + uniChar; // x = "h\\u016B" which prints as you wish

Javascript & APOS; sstring.charCodeAt() должно помочь То есть

"test".charCodeAt(0) вернет числовой код для"t".

Кроме того, вам нужно написать оператор if, чтобы проверить, не является ли символ не ASCII, и т. Д.

Ваш ответ на вопрос