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右键菜单效果代码
Jul 21 Javascript
用按钮控制iframe显示的网页实现方法
Feb 04 Javascript
js兼容的placeholder属性详解
Aug 18 Javascript
AngularJS仿苹果滑屏删除控件
Jan 18 Javascript
jQuery animate()实现背景色渐变效果的处理方法【使用jQuery.color.js插件】
Mar 15 Javascript
JavaScript纯色二维码变成彩色二维码
Jul 23 Javascript
详解如何使用webpack打包JS
Jun 21 Javascript
webpack+vue-cli项目中引入外部非模块格式js的方法
Sep 28 Javascript
详解webpack打包时排除其中一个css、js文件或单独打包一个css、js文件(两种方法)
Oct 26 Javascript
微信小程序实现动态获取元素宽高的方法分析
Dec 10 Javascript
jQuery实现的网站banner图片无缝轮播效果完整实例
Jan 28 jQuery
js实现指定时间倒计时效果
Aug 26 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学习笔记 [预定义数组(超全局数组)]
2011/06/09 PHP
Drupal读取Excel并导入数据库实例
2014/03/02 PHP
详谈phpAdmin修改密码后拒绝访问的问题
2017/04/03 PHP
PHP Post获取不到非表单数据的问题解决办法
2018/02/27 PHP
如何在centos8自定义目录安装php7.3
2019/11/28 PHP
JQuery Easyui Tree的oncheck事件实现代码
2010/05/28 Javascript
关于IE中getElementsByClassName不能用的问题解决方法
2013/08/26 Javascript
让浏览器DOM元素最后加载的js方法
2014/07/29 Javascript
JavaScript中的toLocaleDateString()方法使用简介
2015/06/12 Javascript
jquery 获取select数组与name数组长度的实现代码
2016/06/20 Javascript
微信小程序 解析网页内容详解及实例
2017/02/22 Javascript
什么是Vue.js框架 为什么选择它?
2017/10/17 Javascript
代码详解JS操作剪贴板
2018/02/11 Javascript
浅谈微信小程序之官方UI框架we-ui使用教程
2018/08/20 Javascript
微信小程序中使用Async-await方法异步请求变为同步请求方法
2019/03/28 Javascript
JS把字符串格式的时间转换成几秒前、几分钟前、几小时前、几天前等格式
2019/07/10 Javascript
手把手教您实现react异步加载高阶组件
2020/04/07 Javascript
详解Vue中的watch和computed
2020/11/09 Javascript
简单介绍Python中利用生成器实现的并发编程
2015/05/04 Python
Tornado高并发处理方法实例代码
2018/01/15 Python
python中yaml配置文件模块的使用详解
2018/04/27 Python
Python返回数组/List长度的实例
2018/06/23 Python
NumPy 数学函数及代数运算的实现代码
2018/07/18 Python
Python实现将Excel转换成为image的方法
2018/10/23 Python
在python中pandas读文件,有中文字符的方法
2018/12/12 Python
python 寻找离散序列极值点的方法
2019/07/10 Python
使用coverage统计python web项目代码覆盖率的方法详解
2019/08/05 Python
Pytorch mask-rcnn 实现细节分享
2020/06/24 Python
利用pipenv和pyenv管理多个相互独立的Python虚拟开发环境
2020/11/01 Python
CSS3实现瀑布流布局与无限加载图片相册的实例代码
2016/12/22 HTML / CSS
JD Sports法国:英国篮球和运动时尚的领导者
2017/09/28 全球购物
大客户经理岗位职责
2015/04/09 职场文书
小学生家长意见
2015/06/03 职场文书
2015年初中教师个人工作总结
2015/07/21 职场文书
使用Spring处理x-www-form-urlencoded方式
2021/11/02 Java/Android
开发微信小程序之WXSS样式教程
2022/04/18 HTML / CSS