簡體   English   中英

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

[英]How to print literal unicode string in 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實現呢?

像這樣嗎

/* 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 />");
}

結果

a
h\u016B
s\u00EF

JSFiddle

javascript的string.charCodeAt()應該會有所幫助。

"test".charCodeAt(0)將返回"t"的數字代碼。

除此之外,您還需要編寫一個if語句來檢查字符是否為非ASCII等。

如果您有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:按原樣顯示unicode,但是由於這里的問題而被關閉。

這個問題的另一個答案:至少在某些現代瀏覽器中,也可以使用String.raw-函數

語法如下:

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

這是一個有效的小提琴(Chrome,FF): http : //jsfiddle.net/w9L6qgt6/1/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM