如何在Javascript中打印文字unicode字符串?

Jér*_*nge 16 javascript unicode character unicode-literals

我有一个包含特殊unicode字符串的数组:

var a = [
    ["a", 33],  
    ["h\u016B", 44],
    ["s\u00EF", 51],
    ...
];
Run Code Online (Sandbox Code Playgroud)

当我遍历这个数组时:

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

它打印带有重音的字符:

a
hù
sô
...
Run Code Online (Sandbox Code Playgroud)

而且我要:

a
h\u016B
s\u00EF
...
Run Code Online (Sandbox Code Playgroud)

我怎样才能在Javascript中实现这一目标?

Zet*_*eta 17

像这样的东西?

/* 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 />");
}
Run Code Online (Sandbox Code Playgroud)

结果

a
h\u016B
s\u00EF

的jsfiddle


use*_*475 5

javascript string.charCodeAt()应该有所帮助.即

"test".charCodeAt(0)将返回数字代码"t".

除此之外,您需要编写一个if语句来检查字符是否为非ASCII等.


zea*_*uss 5

如果您有一个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
Run Code Online (Sandbox Code Playgroud)


Dom*_*nik 5

所以,到这里试图回答这个问题:Javascript:显示unicode,但由于这个问题已经关闭了.

这个问题的另一个答案是:(至少在一些现代浏览器中)也可以使用String.raw - 函数

语法是这样的:

var rawStr = String.raw`Hello \u0153`;
Run Code Online (Sandbox Code Playgroud)

这是一个工作小提琴(Chrome,FF):http://jsfiddle.net/w9L6qgt6/1/