JS實(shí)現(xiàn)的漢字與Unicode碼相互轉(zhuǎn)化功能分析
本文實(shí)例講述了JS實(shí)現(xiàn)的漢字與Unicode碼相互轉(zhuǎn)化功能。分享給大家供大家參考,具體如下:
有時(shí)候,我們?cè)诮o后端傳遞變量的的值中有漢字,可能由于編碼的原因,傳遞到后端后變?yōu)閬y碼了。所以有時(shí)候?yàn)榱耸∈禄蛘咂渌厥庖蟮臅r(shí)候,會(huì)把傳遞的漢字轉(zhuǎn)換成Unicode編碼后再進(jìn)行傳遞。
當(dāng)然漢字轉(zhuǎn)換成unicode編碼,使用JS的charCodeAt()
方法就可以。
'好'.charCodeAt(0).toString(16) "597d"
這段代碼的意思是,把字符'好'轉(zhuǎn)化成Unicode編碼,toString()
就是把字符轉(zhuǎn)化成16進(jìn)制了
用法:charCodeAt()
方法可返回指定位置的字符的 Unicode 編碼。這個(gè)返回值是 0 - 65535 之間的整數(shù)
語(yǔ)法:stringObject.charCodeAt(index)
index參數(shù)必填,表示字符串中某個(gè)位置的數(shù)字,即字符在字符串中的下標(biāo)。
注:字符串中第一個(gè)字符的下標(biāo)是 0。如果 index 是負(fù)數(shù),或大于等于字符串的長(zhǎng)度,則 charCodeAt()
返回 NaN。
例如:
var str="Hello world!" document.write(str.charCodeAt(1)) //結(jié)果:101 '好哦'.charCodeAt(0).toString(16) "597d" '好哦'.charCodeAt(1).toString(16) "54e6"
要是想把unicode解碼成字符呢?
要想對(duì)Unicode解碼的話,必須要用轉(zhuǎn)義字符'\u'
'\u54e6' "哦"
總結(jié)下:
js unicode是以十六進(jìn)制代碼外加開(kāi)頭\u表示的字符串。即\unnnn
Unicode 是為了解決傳統(tǒng)的字符編碼方案的局限而產(chǎn)生的,它為每種語(yǔ)言中的每個(gè)字符設(shè)定了統(tǒng)一并且唯一的二進(jìn)制編碼,以滿足跨語(yǔ)言、跨平臺(tái)進(jìn)行文本轉(zhuǎn)換、處理的要求。1990年開(kāi)始研發(fā),1994年正式公布。
下面先看一個(gè)簡(jiǎn)單的例子,漢字轉(zhuǎn)化為unicode方法:
function toUnicodeFun(data){ if(data == '' || typeof data == 'undefined') return '請(qǐng)輸入漢字'; var str =''; for(var i=0;i<data.length;i++){ str+="\\u"+data.charCodeAt(i).toString(16); } return str; } var resultUnicode = toUnicodeFun('中國(guó)'); // \u4e2d\u56fd console.log(resultUnicode);
unicode轉(zhuǎn)化為漢字的方法:
function toChineseWords(data){ if(data == '' || typeof data == 'undefined') return '請(qǐng)輸入十六進(jìn)制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);//中國(guó)
在網(wǎng)上找到另外一個(gè)實(shí)現(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('中國(guó)'); //\u4e2d\u56fd var result2 = GB2312UnicodeConverter.ToUnicode(result); //%5cu4e2d%5cu56fd
下面實(shí)現(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)容可查看本站專(zhuān)題:《javascript編碼操作技巧總結(jié)》、《JavaScript加密解密技巧匯總》、《JavaScript錯(cuò)誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》及《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)》
希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。
- JS實(shí)現(xiàn)漢字與Unicode碼相互轉(zhuǎn)換的方法詳解
- JS將unicode碼轉(zhuǎn)中文方法
- js 中文漢字轉(zhuǎn)Unicode、Unicode轉(zhuǎn)中文漢字、ASCII轉(zhuǎn)換Unicode、Unicode轉(zhuǎn)換ASCII、中文轉(zhuǎn)換X函數(shù)代碼
- Json_encode防止?jié)h字轉(zhuǎn)義成unicode的方法
- js unicode 編碼解析關(guān)于數(shù)據(jù)轉(zhuǎn)換為中文的兩種方法
- 如何讓Jackson JSON生成的數(shù)據(jù)包含的中文以u(píng)nicode方式編碼
- javascript unicode與GBK2312(中文)編碼轉(zhuǎn)換方法
- 無(wú)語(yǔ),javascript居然支持中文(unicode)編程!
- 解決JSON.stringify()自動(dòng)將中文轉(zhuǎn)譯成unicode的問(wèn)題
相關(guān)文章
基于Bootstrap實(shí)現(xiàn)下拉菜單項(xiàng)和表單導(dǎo)航條(兩個(gè)菜單項(xiàng),一個(gè)下拉菜單和登錄表單導(dǎo)航條)
這篇文章主要介紹了基于Bootstrap實(shí)現(xiàn)下拉菜單項(xiàng)和表單導(dǎo)航條(兩個(gè)菜單項(xiàng),一個(gè)下拉菜單和登錄表單導(dǎo)航條)的相關(guān)資料,需要的朋友可以參考下2016-07-07TypeScript中的類(lèi)型斷言[as語(yǔ)法|<>語(yǔ)法]的使用
本文主要介紹了TypeScript中的類(lèi)型斷言[as語(yǔ)法|<>語(yǔ)法]的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06javascript 彈出窗口中是否顯示地址欄的實(shí)現(xiàn)代碼
程序中通過(guò)點(diǎn)擊一個(gè)“發(fā)貨提醒”鏈接彈出另一個(gè)窗口,使用的方法是用javascript 的openUrl()方法。2011-04-04JS+HTML5 FileReader實(shí)現(xiàn)文件上傳前本地預(yù)覽功能
這篇文章主要為大家詳細(xì)介紹了JS+HTML5 FileReader實(shí)現(xiàn)文件上傳前本地預(yù)覽功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07Javascript中使用A標(biāo)簽獲取當(dāng)前目錄的絕對(duì)路徑方法
這篇文章主要介紹了Javascript中使用A標(biāo)簽獲取當(dāng)前目錄的絕對(duì)路徑方法,本文講解的方法比較特別,需要的朋友可以參考下2015-03-03js中關(guān)于new Object時(shí)傳參的一些細(xì)節(jié)分析
這里討論給Object傳參時(shí),其內(nèi)部的處理。參考:ECMA262 V5 15.2.2.12011-03-03bootstrap實(shí)現(xiàn)彈窗和拖動(dòng)效果
這篇文章主要介紹了bootstrap實(shí)現(xiàn)彈窗和拖動(dòng)效果的相關(guān)資料,需要的朋友可以參考下2016-01-01javascript實(shí)現(xiàn)控制的多級(jí)下拉菜單
這篇文章主要介紹了javascript實(shí)現(xiàn)控制的多級(jí)下拉菜單,包含示例代碼,效果非常不錯(cuò),這里推薦給大家。2015-07-07用JS實(shí)現(xiàn)一個(gè)頁(yè)面多個(gè)css樣式實(shí)現(xiàn)
在Hello,Yang中看見(jiàn)的一篇文章,感覺(jué)很有用,轉(zhuǎn)來(lái)這里……2008-05-05web3.js增加eth.getRawTransactionByHash(txhash)方法步驟
這篇文章主要介紹了web3.js增加eth.getRawTransactionByHash(txhash)方法步驟,需要的朋友可以參考下2018-03-03