首页 > 编程 > JavaScript > 正文

JS实现的汉字与Unicode码相互转化功能分析

2019-11-19 13:46:57
字体:
来源:转载
供稿:网友

本文实例讲述了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/u56fdconsole.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/u56fdvar 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.VeVB.COm/transcoding/unicode_chinese

Native/Unicode在线编码转换工具:
http://tools.VeVB.COm/transcoding/native2unicode

在线中文汉字/ASCII码/Unicode编码互相转换工具:
http://tools.VeVB.COm/transcoding/chinese2unicode

更多关于JavaScript相关内容可查看本站专题:《javascript编码操作技巧总结》、《JavaScript加密解密技巧汇总》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结

希望本文所述对大家JavaScript程序设计有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表