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 相关文章推荐
使用window.prompt()实现弹出用户输入的对话框
Apr 13 Javascript
jQuery结合AJAX之在页面滚动时从服务器加载数据
Jun 30 Javascript
jQuery中extend函数详解
Jul 13 Javascript
jQuery 1.9.1源码分析系列(十三)之位置大小操作
Dec 02 Javascript
JavaScript基础知识及常用方法总结
Jan 10 Javascript
详解javascript中对数据格式化的思考
Jan 23 Javascript
使用jQuery ajaxupload插件实现无刷新上传文件
Apr 23 jQuery
vue+mockjs模拟数据实现前后端分离开发的实例代码
Aug 08 Javascript
利用js编写网页进度条效果
Oct 08 Javascript
Node.js中的不安全跳转如何防御详解
Oct 21 Javascript
jquery中为什么能用$操作
Jun 18 jQuery
JavaScript实现简单计时器
Jun 22 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函数代码
2010/04/22 PHP
微信支付的开发流程详解
2016/09/13 PHP
php面向对象程序设计中self与static的区别分析
2019/05/21 PHP
基于thinkphp6.0的success、error实现方法
2019/11/05 PHP
js 替换功能函数,用正则表达式解决,js的全部替换
2010/12/08 Javascript
jQuery ajax serialize() 方法使用示例
2014/11/02 Javascript
JavaScript中的类与实例实现方法
2015/01/23 Javascript
JS+CSS实现的经典tab选项卡效果代码
2015/09/16 Javascript
Angular JS 生成动态二维码的方法
2017/02/23 Javascript
微信小程序 template模板详解及实例代码
2017/03/09 Javascript
js中toString()和String()区别详解
2017/03/23 Javascript
判断滚动条滑到底部触发事件(实例讲解)
2017/11/15 Javascript
vue移动UI框架滑动加载数据的方法
2018/03/12 Javascript
vuex操作state对象的实例代码
2018/04/25 Javascript
vue2.0实现音乐/视频播放进度条组件
2018/06/06 Javascript
jQuery移动端跑马灯抽奖特效升级版(抽奖概率固定)实现方法
2019/01/18 jQuery
js实现随机div颜色位置 类似满天星效果
2019/10/24 Javascript
查找Vue中下标的操作(some和findindex)
2020/08/12 Javascript
Python实现的维尼吉亚密码算法示例
2018/04/12 Python
django实现类似触发器的功能
2019/11/15 Python
Python判断字符串是否为空和null方法实例
2020/04/26 Python
解决阿里云邮件发送不能使用25端口问题
2020/08/07 Python
浅析Python中字符串的intern机制
2020/10/03 Python
如何利用python 读取配置文件
2021/01/06 Python
ABOUT YOU匈牙利:500个最受欢迎的时尚品牌
2019/07/19 全球购物
自我鉴定范文300字
2013/10/01 职场文书
大学本科毕业生的自我鉴定范文
2013/11/19 职场文书
成品仓管员工作职责
2013/12/29 职场文书
自考生自我评价分享
2014/01/18 职场文书
2015新年联欢晚会开场白
2014/12/14 职场文书
入党现实表现材料
2014/12/23 职场文书
2015年房产销售工作总结范文
2015/05/22 职场文书
六一亲子活动感想
2015/08/07 职场文书
写作技巧:怎样写好一份优秀工作总结?
2019/08/14 职场文书
Python使用BeautifulSoup4修改网页内容
2022/05/20 Python
python如何查找列表中元素的位置
2022/05/30 Python