溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

JS實現(xiàn)的漢字與Unicode碼相互轉(zhuǎn)化功能分析

發(fā)布時間:2020-10-04 01:36:42 來源:腳本之家 閱讀:154 作者:風(fēng)雨后見彩虹 欄目:web開發(fā)

本文實例講述了JS實現(xiàn)的漢字與Unicode碼相互轉(zhuǎn)化功能。分享給大家供大家參考,具體如下:

有時候,我們在給后端傳遞變量的的值中有漢字,可能由于編碼的原因,傳遞到后端后變?yōu)閬y碼了。所以有時候為了省事或者其它特殊要求的時候,會把傳遞的漢字轉(zhuǎn)換成Unicode編碼后再進行傳遞。

當(dāng)然漢字轉(zhuǎn)換成unicode編碼,使用JS的charCodeAt()方法就可以。

'好'.charCodeAt(0).toString(16)
"597d"

這段代碼的意思是,把字符'好'轉(zhuǎn)化成Unicode編碼,toString()就是把字符轉(zhuǎn)化成16進制了

用法:charCodeAt() 方法可返回指定位置的字符的 Unicode 編碼。這個返回值是 0 - 65535 之間的整數(shù)

語法:stringObject.charCodeAt(index)

index參數(shù)必填,表示字符串中某個位置的數(shù)字,即字符在字符串中的下標(biāo)。

注:字符串中第一個字符的下標(biāo)是 0。如果 index 是負(fù)數(shù),或大于等于字符串的長度,則 charCodeAt() 返回 NaN。

例如:

var str="Hello world!"
document.write(str.charCodeAt(1))
//結(jié)果:101
'好哦'.charCodeAt(0).toString(16)
"597d"
'好哦'.charCodeAt(1).toString(16)
"54e6"

要是想把unicode解碼成字符呢?

要想對Unicode解碼的話,必須要用轉(zhuǎn)義字符'\u'

'\u54e6'
"哦"

總結(jié)下:

js unicode是以十六進制代碼外加開頭\u表示的字符串。即\unnnn

Unicode 是為了解決傳統(tǒng)的字符編碼方案的局限而產(chǎn)生的,它為每種語言中的每個字符設(shè)定了統(tǒng)一并且唯一的二進制編碼,以滿足跨語言、跨平臺進行文本轉(zhuǎn)換、處理的要求。1990年開始研發(fā),1994年正式公布。

下面先看一個簡單的例子,漢字轉(zhuǎn)化為unicode方法:

function toUnicodeFun(data){
 if(data == '' || typeof data == 'undefined') return '請輸入漢字';
  var str ='';
  for(var i=0;i<data.length;i++){
   str+="\\u"+data.charCodeAt(i).toString(16);
  }
  return str;
}
var resultUnicode = toUnicodeFun('中國'); // \u4e2d\u56fd
console.log(resultUnicode);

unicode轉(zhuǎn)化為漢字的方法:

function toChineseWords(data){
  if(data == '' || typeof data == 'undefined') return '請輸入十六進制unicode';
  data = data.split("\\u");
  var str ='';
  for(var i=0;i<data.length;i++){
    str+=String.fromCharCode(parseInt(data[i],16).toString(10));
  }
  return str;
}
var resultChineseWords = toChineseWords("\u4e2d\u56fd");
console.log(resultChineseWords);//中國

在網(wǎng)上找到另外一個實現(xiàn)方式:

var GB2312UnicodeConverter={
  ToUnicode:function(str){
    return escape(str).toLocaleLowerCase().replace(/%u/gi,'\\u');
  },
  ToGB2312:function(str){
    return unescape(str.replace(/\\u/gi,'%u'));
  }
};
var result = GB2312UnicodeConverter.ToUnicode('中國'); //\u4e2d\u56fd
var result2 = GB2312UnicodeConverter.ToUnicode(result); //%5cu4e2d%5cu56fd

下面實現(xiàn)漢字轉(zhuǎn)Unicode碼:

function toUnicode(s){
  return s.replace(/([\u4E00-\u9FA5]|[\uFE30-\uFFA0])/g,function(newStr){
    return "\\u" + newStr.charCodeAt(0).toString(16);
  });
}

PS:這里再為大家提供幾款Unicode編碼轉(zhuǎn)換操作相關(guān)工具供大家參考使用:

在線Unicode/中文轉(zhuǎn)換工具:
http://tools.jb51.net/transcoding/unicode_chinese

Native/Unicode在線編碼轉(zhuǎn)換工具:
http://tools.jb51.net/transcoding/native2unicode

在線中文漢字/ASCII碼/Unicode編碼互相轉(zhuǎn)換工具:
http://tools.jb51.net/transcoding/chinese2unicode

更多關(guān)于JavaScript相關(guān)內(nèi)容可查看本站專題:《javascript編碼操作技巧總結(jié)》、《JavaScript加密解密技巧匯總》、《JavaScript錯誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》及《JavaScript數(shù)學(xué)運算用法總結(jié)》

希望本文所述對大家JavaScript程序設(shè)計有所幫助。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI