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事件的连接使用示例
Jun 18 Javascript
JavaScript实现检查页面上的广告是否被AdBlock屏蔽了的方法
Nov 03 Javascript
jquery实现的省市区三级联动
Apr 02 Javascript
深入探寻seajs的模块化与加载方式
Apr 14 Javascript
谈谈javascript中使用连等赋值操作带来的问题
Nov 26 Javascript
微信开发 JS-SDK 6.0.2 经常遇到问题总结
Dec 08 Javascript
JavaScript 网页中实现一个计算当年还剩多少时间的倒数计时程序
Jan 25 Javascript
js中作用域的实例解析
Mar 16 Javascript
angularjs数组判断是否含有某个元素的实例
Feb 27 Javascript
JavaScript数组特性与实践应用深入详解
Dec 30 Javascript
es6中使用map简化复杂条件判断操作实例详解
Feb 19 Javascript
输入框跟随文字内容适配宽实现示例
Aug 14 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变量范围介绍
2012/10/15 PHP
php中的boolean(布尔)类型详解
2013/10/28 PHP
Laravel框架模型的创建及模型对数据操作示例
2019/05/07 PHP
php 输出缓冲 Output Control用法实例详解
2020/03/03 PHP
DOM相关内容速查手册
2007/02/07 Javascript
js 对象是否存在判断
2009/07/15 Javascript
jQuery 全选/反选以及单击行改变背景色实例
2013/07/02 Javascript
JS获取图片lowsrc属性的方法
2015/04/01 Javascript
jquery图片滚动放大代码分享(2)
2015/08/28 Javascript
jquery 手势密码插件
2017/03/17 Javascript
详解Web使用webpack构建前端项目
2017/09/23 Javascript
微信小程序实现点击按钮修改文字大小功能【附demo源码下载】
2017/12/06 Javascript
vue弹窗组件的实现示例代码
2018/09/10 Javascript
React Hooks 实现和由来以及解决的问题详解
2020/01/17 Javascript
python通过Windows下远程控制Linux系统
2018/06/20 Python
Python创建一个空的dataframe,并循环赋值的方法
2018/11/08 Python
python开发准备工作之配置虚拟环境(非常重要)
2019/02/11 Python
Python3批量生成带logo的二维码方法
2019/06/24 Python
Python 绘制酷炫的三维图步骤详解
2019/07/12 Python
python字符串反转的四种方法详解
2019/12/02 Python
Tensorflow tf.tile()的用法实例分析
2020/05/22 Python
python实现密码验证合格程序的思路详解
2020/06/01 Python
python中翻译功能translate模块实现方法
2020/12/17 Python
Watch Station官方网站:世界一流的手表和智能手表
2020/01/05 全球购物
什么是网络协议
2016/04/07 面试题
经贸日语毕业生自荐信
2013/11/03 职场文书
2014年社区植树节活动方案
2014/02/28 职场文书
2014党员四风对照检查材料思想汇报
2014/09/17 职场文书
2014学校领导四风问题对照检查材料思想汇报
2014/09/22 职场文书
2014年文员工作总结
2014/11/18 职场文书
农业项目合作意向书
2015/05/08 职场文书
2016年“9.22”世界无车日活动小结
2016/04/05 职场文书
4种非常实用的python内置数据结构
2021/04/28 Python
Python 中数组和数字相乘时的注意事项说明
2021/05/10 Python
pytorch model.cuda()花费时间很长的解决
2021/06/01 Python
铁拳制作人赞《铁拳7》老头环Mod:制作精良 但别弄了
2022/04/03 其他游戏