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 相关文章推荐
ExtJS4中的requires使用方法示例介绍
Dec 03 Javascript
判断客户浏览器是否支持cookie的示例代码
Dec 23 Javascript
分享十五款 jQuery 社交网络分享插件
May 16 Javascript
jQuery实现将页面上HTML标签换成另外标签的方法
Jun 09 Javascript
如何清除IE10+ input X 文本框的叉叉和密码输入框的眼睛图标
Dec 21 Javascript
Bootstrap表单控件学习使用
Mar 07 Javascript
jQuery查找dom的几种方法效率详解
May 17 jQuery
Vue实例中生命周期created和mounted的区别详解
Aug 25 Javascript
Vue 实现树形视图数据功能
May 07 Javascript
vue实现element-ui对话框可拖拽功能
Aug 17 Javascript
angularjs自定义过滤器demo示例
Aug 24 Javascript
解决vue刷新页面以后丢失store的数据问题
Aug 11 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
Zend Guard一些常见问题解答
2008/09/11 PHP
为PHP安装imagick时出现Cannot locate header file MagickWand.h错误的解决方法
2014/11/03 PHP
深入理解PHP中的count函数
2016/05/31 PHP
php实现基于pdo的事务处理方法示例
2017/07/21 PHP
PHP 中 var_export、print_r、var_dump 调试中的区别
2018/06/19 PHP
laravel5.1框架model类查询的实现方法
2019/10/08 PHP
js form action动态修改方法
2008/11/04 Javascript
关于firefox的ElementTraversal 接口 使用说明
2010/11/11 Javascript
JavaScript页面实时显示当前时间实例代码
2016/10/23 Javascript
vue2.0使用Sortable.js实现的拖拽功能示例
2017/02/21 Javascript
vue+axios新手实践实现登陆的示例代码
2018/06/06 Javascript
Async/Await替代Promise的6个理由
2019/06/15 Javascript
微信小程序的授权实现过程解析
2019/08/02 Javascript
[43:43]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第三场 11.29
2020/12/02 DOTA
Python ORM框架SQLAlchemy学习笔记之关系映射实例
2014/06/10 Python
Python打印scrapy蜘蛛抓取树结构的方法
2015/04/08 Python
python3编码问题汇总
2016/09/06 Python
python使用matplotlib绘制柱状图教程
2017/02/08 Python
python实现爬取图书封面
2018/07/05 Python
对pytorch网络层结构的数组化详解
2018/12/08 Python
使用PyQt4 设置TextEdit背景的方法
2019/06/14 Python
python判断一个对象是否可迭代的例子
2019/07/22 Python
给大家整理了19个pythonic的编程习惯(小结)
2019/09/25 Python
Flask框架 CSRF 保护实现方法详解
2019/10/30 Python
pymysql的简单封装代码实例
2020/01/08 Python
python实现126邮箱发送邮件
2020/05/20 Python
pytorch中 gpu与gpu、gpu与cpu 在load时相互转化操作
2020/05/25 Python
Python ConfigParser模块的使用示例
2020/10/12 Python
HTML5所有标签汇总及标签意义解释
2015/03/12 HTML / CSS
Html5踩坑记之mandMobile使用小记
2020/04/02 HTML / CSS
斯德哥尔摩通票:Stockholm Pass
2018/01/09 全球购物
英国豪华装饰照明品牌的在线零售商:Inspyer Lighting
2019/12/10 全球购物
信息学院毕业生自荐信范文
2014/03/04 职场文书
五心教育心得体会
2014/09/04 职场文书
学生会宣传部竞选稿
2015/11/21 职场文书
MySQL 外键约束和表关系相关总结
2021/06/20 MySQL