JavaScript中unicode編碼與String互轉(三種方法)


1.引言

JS本身就支持unicode轉string功能,一共有三種方式和String單個字符轉unicode編碼。

2.方法

//unicode轉String
1. eval("'" + str + "'");//當str中有帶分號'或者"時,會報錯,此時改成eval('"' + str + '"')即可
2. (new Function("return '" + str + "'"))();//同上
3. unescape(str.replace(/\u/g, "%u"));
//string轉unicode(str字符的第i個)
1."\\u" + str.charCodeAt(i).toString(16);

3.樣例

//string2unicode
var str_u='\u6211\u662f\u4e2d\u56fd\u4ebaChina';
var ret1 = eval("'" + str + "'");//我是中國人China
var ret2 = (new Function("return '" + str + "'"))();//我是中國人China
var ret3 = unescape(str.replace(/\u/g, "%u"));//我是中國人China

//unicode2string
var str = "我是中國人";
var str_u = string2unicode(str);//\u6211\u662f\u4e2d\u56fd\u4eba
var str_s = unicode2string(str_u);// 我是中國人
function string2unicode(str){
  var ret ="";
  for(var i=0; i<str.length; i++){
    //var code = str.charCodeAt(i); 
    //var code16 = code.toString(16); 	    
       //var ustr = "\\u"+code16;
       //ret +=ustr;
       ret += "\\u" + str.charCodeAt(i).toString(16);
      }
       return ret;
}
function unicode2string(unicode){
  return eval("'" + unicode + "'");
}

  

4.樣例(包含英文的String)

如果String包含有英文時,轉unicode編碼時會產生\\u34這樣子的,而JS自身的unicode轉字符串不能識別這種類型不足4位的unicode嘛。此時string2unicode需要修改一下即可。

function string2unicode(str){
var ret ="";
var ustr = "";

for(var i=0; i<str.length; i++){
	
	var code = str.charCodeAt(i); 
	var code16 = code.toString(16);

	if(code < 0xf){
		ustr = "\\u"+"000"+code16;
	}else if(code < 0xff){
		ustr = "\\u"+"00"+code16;
	}else if(code < 0xfff){
		ustr = "\\u"+"0"+code16;
	}else{
		ustr = "\\u"+code16;
	}	
	ret +=ustr;
	//ret += "\\u" + str.charCodeAt(i).toString(16);	
}
var str_u = string2unicode("中國人CN");//"\u4e2d\u56fd\u4eba\u0043\u004e"
var str_s = unicode2string(str_u);//中國人CN  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM