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


Posted in Javascript onMay 25, 2018

本文实例讲述了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);
  });
}
Javascript 相关文章推荐
传智播客学习之java 反射
Nov 22 Javascript
jquery制作select列表双向选择示例代码
Sep 02 Javascript
JavaScript中的Function函数
Aug 27 Javascript
js原生实现FastClick事件的实例
Nov 20 Javascript
激动人心的 Angular HttpClient的源码解析
Jul 10 Javascript
详解开源的JavaScript插件化框架MinimaJS
Oct 26 Javascript
浅谈js获取ModelAndView值的问题
Mar 28 Javascript
AngularJS修改model值时,显示内容不变的实例
Sep 13 Javascript
在JS循环中使用async/await的方法
Oct 12 Javascript
基于vue通用表单解决方案的思考与分析
Mar 16 Javascript
vue+moment实现倒计时效果
Aug 26 Javascript
微信小程序如何加载数据库真实数据的实现
Mar 04 Javascript
浅析node.js的模块加载机制
May 25 #Javascript
webpack4的迁移的使用方法
May 25 #Javascript
最后说说Vue2 SSR 的 Cookies 问题
May 25 #Javascript
详解webpack4多入口、多页面项目构建案例
May 25 #Javascript
js中的 || 与 &amp;&amp; 运算符详解
May 24 #Javascript
vue axios整合使用全攻略
May 24 #Javascript
vue路由拦截及页面跳转的设置方法
May 24 #Javascript
You might like
PHP的ASP防火墙
2006/10/09 PHP
关于PHP语言构造器介绍
2013/07/08 PHP
浅谈PHP实现大流量下抢购方案
2017/12/15 PHP
Yii2框架操作数据库的方法分析【以mysql为例】
2019/05/27 PHP
PHP利用curl发送HTTP请求的实例代码
2020/07/09 PHP
JavaScript 给汉字排序实例代码
2008/06/28 Javascript
写出更好的JavaScript程序之undefined篇(中)
2009/11/23 Javascript
jquery+json实现的搜索加分页效果
2010/03/31 Javascript
心扬JS分页函数代码
2010/09/10 Javascript
JavaScript的继承的封装介绍
2013/10/15 Javascript
jquery 检测元素是否存在的实例代码
2013/11/19 Javascript
后台获取ZTREE选中节点的方法
2015/02/12 Javascript
深入理解JavaScript系列(50):Function模式(下篇)
2015/03/04 Javascript
把Node.js程序加入服务实现随机启动
2015/06/25 Javascript
js贪吃蛇网页版游戏特效代码分享(挑战十关)
2015/08/24 Javascript
JavaScript正则表达式替换字符串中图片地址(img src)的方法
2017/01/13 Javascript
深入对Vue.js $watch方法的理解
2017/03/20 Javascript
JavaScript贪吃蛇小组件实例代码
2017/08/20 Javascript
Angular HMR(热模块替换)功能实现方法
2018/04/04 Javascript
JavaScript根据json生成html表格的示例代码
2018/10/24 Javascript
JS实现的小火箭发射动画效果示例
2018/12/08 Javascript
vue踩坑记录之数组定义和赋值问题
2019/03/20 Javascript
原生js基于canvas实现一个简单的前端截图工具代码实例
2019/09/10 Javascript
Python基于ThreadingTCPServer创建多线程代理的方法示例
2018/01/11 Python
利用Python实现kNN算法的代码
2019/08/16 Python
Pandas DataFrame中的tuple元素遍历的实现
2019/10/23 Python
python常用排序算法的实现代码
2019/11/08 Python
Python数组并集交集补集代码实例
2020/02/18 Python
结束运行python的方法
2020/06/16 Python
python 6种方法实现单例模式
2020/12/15 Python
Blue Nile台湾:钻石珠宝商,订婚首饰、结婚戒指和精品首饰
2017/11/24 全球购物
远程学习的教学用品和家庭学习资源:Really Good Stuff
2020/04/27 全球购物
J2EE中的容器都包括哪些
2013/08/21 面试题
结婚保证书范文
2014/04/29 职场文书
nginx前后端同域名配置的方法实现
2021/03/31 Servers
浅谈Python基础之列表那些事儿
2021/05/11 Python