2011-06-19 25 views
1

我有Unicode和ASCII字符的混合源,例如:如何將混合ascii和unicode轉換爲JavaScript中的字符串?

var source = "\u5c07\u63a2\u8a0e HTML5 \u53ca\u5176\u4ed6";

如何通過利用和擴展在Javascript以下uniCodeToString函數寫我自己把它轉換成字符串?該函數可以將純Unicode轉換爲字符串。

function uniCodeToString(source){ 
    //for example, source = "\u5c07\u63a2\u8a0e" 
    var escapedSource = escape(source); 
    var codeArray = escapedSource.split("%u"); 
    var str = ""; 
    for(var i=1; i<codeArray.length; i++){ 
     str += String.fromCharCode("0x"+codeArray[i]); 
    } 
    return str; 
} 
+0

它已經是一個字符串。 – alex

+0

這個問題並沒有太多意義。您引用的源字符串長度爲13個字符,並且根本沒有任何「u」;你的意思是'var source =「\\ u5c07 \\ u63a2 \\ u8a0e HTML5 \\ u53ca \\ u5176 \\ u4ed6」;'?你真正的潛在技術問題是什麼?真實的源數據和真正想要的最終結果? –

回答

4

使用encodeURIComponent,轉義從來沒有意味着unicode。

var source = "\u5c07\u63a2\u8a0e HTML5 \u53ca\u5176\u4ed6"; 


    var enc=encodeURIComponent(source) 

    //returned value: (String) 
    %E5%B0%87%E6%8E%A2%E8%A8%8E%20HTML5%20%E5%8F%8A%E5%85%B6%E4%BB%96 

    decodeURIComponent(enc) 

    //returned value: (String) 
    將探討 HTML5 及其他 
+0

反之亦然。 我想將japannese字符串轉換爲Unicode?你能舉一些例子嗎? – gviswanathan

2

我想你是誤解了Unicode轉義序列的目的。

var source = "\u5c07\u63a2\u8a0e HTML5 \u53ca\u5176\u4ed6"; 

JavaScript的字符串始終的Unicode(每個碼單元是一個16位UTF-16編碼值。)的逃逸的目的是允許通過用於保存源編碼以描述是不受支持的值文件(例如,HTML頁面或.JS文件被編碼爲ISO-8859-1)或克服鍵盤限制等問題。這與使用\n來指示換行碼點沒有什麼不同。

無論您將序列作爲文字還是轉義序列寫入,上述字符串(「將探討HTML5及其他」)都由值5c07 63a2 8a0e 0020 0048 0054 004d 004c 0035 0020 53ca 5176 4ed6組成。

查看字符串文字部分ECMA-262瞭解更多詳情。

相關問題