[英]How to convert mixed ascii and unicode to a string in javascript?
我有unicode和ascii字符的混合來源,例如:
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;
}
使用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 及其他
我認為您誤解了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
無論您將序列寫為原義5c07 63a2 8a0e 0020 0048 0054 004d 004c 0035 0020 53ca 5176 4ed6
還是轉義序列。
有關更多詳細信息,請參見ECMA-262的字符串文字部分。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.