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 相关文章推荐
Javascript入门学习资料收集整理篇
Jul 06 Javascript
两个Javascript小tip资料
Nov 23 Javascript
分享20款好玩的jQuery游戏
Apr 17 Javascript
js动态修改input输入框的type属性(实现方法解析)
Nov 13 Javascript
js用正则表达式来验证表单(比较齐全的资源)
Nov 17 Javascript
js delete 用法(删除对象属性及变量)
Aug 24 Javascript
JQuery选择器、过滤器大整理
May 26 Javascript
JavaScript制作简易计算器(不用eval)
Feb 05 Javascript
在Vue中使用echarts的实例代码(3种图)
Jul 10 Javascript
简单实现vue验证码60秒倒计时功能
Oct 11 Javascript
vue Tab切换以及缓存页面处理的几种方式
Nov 05 Javascript
JavaScript 双向链表操作实例分析【创建、增加、查找、删除等】
Apr 28 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 curl模拟浏览器采集阿里巴巴的实现代码
2011/04/20 PHP
一组PHP加密解密函数分享
2014/06/05 PHP
PHP curl 抓取AJAX异步内容示例
2014/09/09 PHP
ThinkPHP中I(),U(),$this-&gt;post()等函数用法
2014/11/22 PHP
Centos 6.5下PHP 5.3安装ffmpeg扩展的步骤详解
2017/03/02 PHP
PHP实现随机发扑克牌
2020/04/22 PHP
JavaScript 学习点滴记录
2009/04/24 Javascript
Javascript引用指针使用介绍
2012/11/07 Javascript
7个让JavaScript变得更好的注意事项
2015/01/28 Javascript
JSON格式的键盘编码对照表
2015/01/29 Javascript
jQuery知识点整理
2015/01/30 Javascript
JavaScript和HTML DOM的区别与联系及Javascript和DOM的关系
2015/11/15 Javascript
NodeJs的优势和适合开发的程序
2016/08/14 NodeJs
AngularJs  Creating Services详解及示例代码
2016/09/02 Javascript
原生js更改css样式的两种方式
2017/03/15 Javascript
JavaScript 中调用 Kotlin 方法实例详解
2017/06/09 Javascript
vue.js删除列表中的一行
2018/06/30 Javascript
jQuery实现侧边栏隐藏与显示的方法详解
2018/12/22 jQuery
nuxt 页面路由配置,主页轮播组件开发操作
2020/11/05 Javascript
JS指定音频audio在某个时间点进行播放
2020/11/28 Javascript
[51:17]Mski vs VGJ.S Supermajor小组赛C组 BO3 第三场 6.3
2018/06/04 DOTA
详解python基础之while循环及if判断
2017/08/24 Python
python2.7安装图文教程
2018/03/13 Python
遗传算法python版
2018/03/19 Python
Python多进程multiprocessing.Pool类详解
2018/04/27 Python
pytorch: Parameter 的数据结构实例
2019/12/31 Python
Pytorch mask_select 函数的用法详解
2020/02/18 Python
python如何更新包
2020/06/11 Python
Canvas实现保存图片到本地的示例代码
2018/06/28 HTML / CSS
数据员岗位职责
2013/11/19 职场文书
生物学学生自我评价
2014/01/17 职场文书
教师个人鉴定材料
2014/02/08 职场文书
2015年九一八事变纪念活动实施方案
2015/05/06 职场文书
如何做好员工培训计划?
2019/07/09 职场文书
Canvas三种动态画圆实现方法说明(小结)
2021/04/16 Javascript
Python 一键获取电脑浏览器的账号密码
2022/05/11 Python