我有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;
}
答案 0 :(得分:4)
使用encodeURIComponent,escape从未用于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 及其他
答案 1 :(得分: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的字符串文字部分。