本文实例讲述了JS实现的汉字与Unicode码相互转化功能。分享给大家供大家参考,具体如下:
有时候,我们在给后端传递变量的的值中有汉字,可能由于编码的原因,传递到后端后变为乱码了。所以有时候为了省事或者其它特殊要求的时候,会把传递的汉字转换成Unicode编码后再进行传递。
当然汉字转换成unicode编码,使用JS的charCodeAt()
方法就可以。
'好'.charCodeAt(0).toString(16) "597d"
这段代码的意思是,把字符'好'转化成Unicode编码,toString()
就是把字符转化成16进制了
用法:charCodeAt()
方法可返回指定位置的字符的 Unicode 编码。这个返回值是 0 - 65535 之间的整数
语法:stringObject.charCodeAt(index)
index参数必填,表示字符串中某个位置的数字,即字符在字符串中的下标。
注:字符串中第一个字符的下标是 0。如果 index 是负数,或大于等于字符串的长度,则 charCodeAt()
返回 NaN。
例如:
var str="Hello world!" document.write(str.charCodeAt(1)) //结果:101 '好哦'.charCodeAt(0).toString(16) "597d" '好哦'.charCodeAt(1).toString(16) "54e6"
要是想把unicode解码成字符呢?
要想对Unicode解码的话,必须要用转义字符'\u'
'\u54e6' "哦"
总结下:
js unicode是以十六进制代码外加开头\u表示的字符串。即\unnnn
Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。1990年开始研发,1994年正式公布。
下面先看一个简单的例子,汉字转化为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转化为汉字的方法:
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);//中国
在网上找到另外一个实现方式:
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
下面实现汉字转Unicode码:
function toUnicode(s){ return s.replace(/([\u4E00-\u9FA5]|[\uFE30-\uFFA0])/g,function(newStr){ return "\\u" + newStr.charCodeAt(0).toString(16); }); }
PS:这里再为大家提供几款Unicode编码转换操作相关工具供大家参考使用:
在线Unicode/中文转换工具:
http://tools.jb51.net/transcoding/unicode_chinese
Native/Unicode在线编码转换工具:
http://tools.jb51.net/transcoding/native2unicode
在线中文汉字/ASCII码/Unicode编码互相转换工具:
http://tools.jb51.net/transcoding/chinese2unicode
更多关于JavaScript相关内容可查看本站专题:《javascript编码操作技巧总结》、《JavaScript加密解密技巧汇总》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》
希望本文所述对大家JavaScript程序设计有所帮助。
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。
更新日志
- 第五街的士高《印度激情版》3CD [WAV+CUE][2.4G]
- 三国志8重制版哪个武将智力高 三国志8重制版智力武将排行一览
- 三国志8重制版哪个武将好 三国志8重制版武将排行一览
- 三国志8重制版武将图像怎么保存 三国志8重制版武将图像设置方法
- 何方.1990-我不是那种人【林杰唱片】【WAV+CUE】
- 张惠妹.1999-妹力新世纪2CD【丰华】【WAV+CUE】
- 邓丽欣.2006-FANTASY【金牌大风】【WAV+CUE】
- 饭制《黑神话》蜘蛛四妹手办
- 《燕云十六声》回应跑路:年内公测版本完成95%
- 网友发现国内版《双城之战》第二季有删减:亲亲环节没了!
- 邓丽君2024-《漫步人生路》头版限量编号MQA-UHQCD[WAV+CUE]
- SergeProkofievplaysProkofiev[Dutton][FLAC+CUE]
- 永恒英文金曲精选4《TheBestOfEverlastingFavouritesVol.4》[WAV+CUE]
- 群星《国风超有戏 第9期》[320K/MP3][13.63MB]
- 群星《国风超有戏 第9期》[FLAC/分轨][72.56MB]