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 相关文章推荐
js检测客户端不是firefox则提示下载
Apr 07 Javascript
表单验证的完整应用案例探讨
Mar 29 Javascript
jquery实现简单的二级导航下拉菜单效果
Sep 07 Javascript
JS实现可展开折叠层的鼠标拖曳效果
Oct 09 Javascript
JS模拟Dialog弹出浮动框效果代码
Oct 16 Javascript
详解JavaScript的回调函数
Nov 20 Javascript
微信小程序开发之IOS和Android兼容的问题
Sep 26 Javascript
vue-cli实现多页面多路由的示例代码
Jan 30 Javascript
关于Vue项目跨平台运行问题的解决方法
Sep 18 Javascript
浅析vue插槽和作用域插槽的理解
Apr 22 Javascript
微信小程序判断用户是否需要再次授权获取个人信息
Jul 18 Javascript
layui之数据表格--与后台交互获取数据的方法
Sep 29 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 快速生成 Flash 动画的方法
2007/03/06 PHP
一个简单php扩展介绍与开发教程
2010/08/19 PHP
解析php中如何直接执行SHELL
2013/06/28 PHP
PHP开发注意事项总结
2015/02/04 PHP
php生成RSS订阅的方法
2015/02/13 PHP
THinkPHP获取客户端IP与IP地址查询的方法
2016/11/14 PHP
PHP检测数据类型的几种方法(总结)
2017/03/04 PHP
Jquery图形报表插件 jqplot简介及参数详解
2012/10/10 Javascript
用js判断页面是否加载完成实现代码
2012/12/11 Javascript
JS禁用页面上所有控件的实现方法(附demo源码下载)
2015/12/17 Javascript
浏览器环境下JavaScript脚本加载与执行探析之动态脚本与Ajax脚本注入
2016/01/19 Javascript
JS获取当前脚本文件的绝对路径
2016/03/02 Javascript
JS 对java返回的json格式的数据处理方法
2016/12/05 Javascript
浅析JavaScript的几种Math函数,random(),ceil(),round(),floor()
2016/12/22 Javascript
canvas绘图不清晰的解决方案
2017/02/28 Javascript
详解微信小程序Page中data数据操作和函数调用
2017/09/27 Javascript
关于react-router/react-router-dom v4 history不能访问问题的解决
2018/01/08 Javascript
如何阻止移动端浏览器点击图片浏览
2020/08/29 Javascript
angular8.5集成TinyMce5的使用和详细配置(推荐)
2020/11/16 Javascript
[01:45]2014DOTA2 TI预选赛预选赛 战前探营!
2014/05/21 DOTA
python实现端口转发器的方法
2015/03/13 Python
Django中使用Celery的方法示例
2018/11/29 Python
Django+JS 实现点击头像即可更改头像的方法示例
2018/12/26 Python
Python3.4学习笔记之 idle 清屏扩展插件用法分析
2019/03/01 Python
python数据预处理之数据标准化的几种处理方式
2019/07/17 Python
python 读取更新中的log 或其它文本方式
2019/12/24 Python
python 实现客户端与服务端的通信
2020/12/23 Python
澳大利亚百货公司:David Jones
2018/02/08 全球购物
Java的类与C++的类有什么不同
2014/01/18 面试题
高中三年学习生活的自我评价
2013/10/10 职场文书
应届生求职推荐信
2013/10/28 职场文书
2014年公司迎新年活动方案
2014/02/24 职场文书
危爆物品安全大检查大整治工作方案
2014/05/03 职场文书
2014年小学教师工作自我评价
2014/09/22 职场文书
校长个人总结
2015/03/03 职场文书
2015年教师节新闻稿
2015/07/17 职场文书