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 相关文章推荐
jQuery中的jQuery()方法用法分析
Dec 27 Javascript
浅谈JS之tagNaem和nodeName
Sep 13 Javascript
jquery插件bootstrapValidator表单验证详解
Dec 15 Javascript
JavaScript 网页中实现一个计算当年还剩多少时间的倒数计时程序
Jan 25 Javascript
js实现滑动到页面底部自动加载更多功能
Feb 15 Javascript
bootstrap响应式表格实例详解
May 15 Javascript
详解AngularJS ng-class样式切换
Jun 27 Javascript
实例分析js事件循环机制
Dec 13 Javascript
vue.js $refs和$emit 父子组件交互的方法
Dec 20 Javascript
解决三元运算符 报错“SyntaxError: can''t assign to conditional expression”
Feb 12 Javascript
JavaScript 俄罗斯方块游戏实现方法与代码解释
Apr 08 Javascript
一小时迅速入门Mybatis之bind与多数据源支持 Java API
Sep 15 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不用正则采集速度探究总结
2008/03/24 PHP
简单的方法让你的后台登录更加安全(php中加session验证)
2012/08/22 PHP
Thinkphp+smarty+uploadify实现无刷新上传
2015/07/30 PHP
浅析PHP关键词替换的类(避免重复替换,保留与还原原始链接)
2015/09/22 PHP
PHP中SQL查询语句的id=%d解释(推荐)
2016/12/10 PHP
javascript实现的基于金山词霸网络翻译的代码
2010/01/15 Javascript
两个比较有用的Javascript工具函数代码
2010/02/17 Javascript
解决JS浮点数运算出现Bug的方法
2013/03/12 Javascript
多种方法实现360浏览器下禁止自动填写用户名密码
2014/06/16 Javascript
JavaScript设计模式之外观模式实例
2014/10/10 Javascript
JS实现的生成随机数的4个函数分享
2015/02/11 Javascript
浅析jQuery Mobile的初始化事件
2015/12/03 Javascript
Vuejs第十三篇之组件——杂项
2016/09/09 Javascript
JavaScript拖动层Div代码
2017/03/01 Javascript
从零开始学习Node.js系列教程四:多页面实现的数学运算示例
2017/04/13 Javascript
Vue filters过滤器的使用方法
2017/07/14 Javascript
AngularJS的$location使用方法详解
2017/10/19 Javascript
Node之简单的前后端交互(实例讲解)
2017/11/14 Javascript
bootstrap table列和表头对不齐的解决方法
2019/07/19 Javascript
详解JavaScript中精度失准问题及解决方法
2020/02/04 Javascript
解决vue项目,npm run build后,报路径错的问题
2020/08/13 Javascript
js实现鼠标点击飘爱心效果
2020/08/19 Javascript
[01:20]2018DOTA2亚洲邀请赛总决赛战队LGD晋级之路
2018/04/07 DOTA
Python中死锁的形成示例及死锁情况的防止
2016/06/14 Python
将python代码和注释分离的方法
2018/04/21 Python
Python应用库大全总结
2018/05/30 Python
selenium+python实现1688网站验证码图片的截取功能
2018/08/14 Python
python抓取网页内容并进行语音播报的方法
2018/12/24 Python
对python_discover方法遍历所有执行的用例详解
2019/02/13 Python
python 计算概率密度、累计分布、逆函数的例子
2020/02/25 Python
python框架flask入门之环境搭建及开启调试
2020/06/07 Python
中专生自我鉴定范文
2014/02/02 职场文书
购房协议书范本
2014/04/11 职场文书
小学班级口号大全
2015/12/25 职场文书
如何用JS实现简单的数据监听
2021/05/06 Javascript
详解分布式系统中如何用python实现Paxos
2021/05/18 Python