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数字输入框(包括最大值最小值限制和四舍五入)
Nov 24 Javascript
关于用Jquery的height()、width()计算动态插入的IMG标签的宽高的问题
Dec 08 Javascript
JS字符串截取函数实例
Dec 27 Javascript
JS弹出对话框实现方法(三种方式)
Dec 18 Javascript
详解Node.js包的工程目录与NPM包管理器的使用
Feb 16 Javascript
AngularJS 执行流程详细介绍
Aug 18 Javascript
bootstrap table操作技巧分享
Feb 15 Javascript
angular.js4使用 RxJS 处理多个 Http 请求
Sep 23 Javascript
vue axios登录请求拦截器
Apr 02 Javascript
layui table表格数据的新增,修改,删除,查询,双击获取行数据方式
Nov 14 Javascript
JS实现打字游戏
Dec 17 Javascript
使用Vant完成DatetimePicker 日期的选择器操作
Nov 12 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/02/16 PHP
深入PHP异步执行的详解
2013/06/03 PHP
解析获取优酷视频真实下载地址的PHP源代码
2013/06/26 PHP
基于GD2图形库的PHP生成图片缩略图类代码分享
2015/02/08 PHP
php简单实现发送带附件的邮件
2015/06/10 PHP
php使用socket调用http和smtp协议实例小结
2019/07/26 PHP
javascript fullscreen全屏实现代码
2009/04/09 Javascript
jQuery库与其他JS库冲突的解决办法
2010/02/07 Javascript
用javascript关闭本窗口不弹出询问框的方法
2014/09/12 Javascript
JS动态添加iframe的代码
2015/09/14 Javascript
js实现楼层效果的简单实例
2016/07/15 Javascript
关于JavaScript和jQuery的类型判断详解
2016/10/08 Javascript
轻松学习Javascript闭包
2017/03/01 Javascript
Vue.js实战之组件的进阶
2017/04/04 Javascript
element的el-table中记录滚动条位置的示例代码
2019/11/06 Javascript
jQuery实现简单聊天室
2020/02/08 jQuery
[53:23]Secret vs Liquid 2018国际邀请赛淘汰赛BO3 第二场 8.25
2018/08/29 DOTA
python3批量删除豆瓣分组下的好友的实现代码
2016/06/07 Python
Python解析excel文件存入sqlite数据库的方法
2016/11/15 Python
Python 操作MySQL详解及实例
2017/04/30 Python
浅谈Python NLP入门教程
2017/12/25 Python
python 实现将txt文件多行合并为一行并将中间的空格去掉方法
2018/12/20 Python
Python2 Selenium元素定位的实现(8种)
2019/02/25 Python
opencv-python 提取sift特征并匹配的实例
2019/12/09 Python
pandas中read_csv的缺失值处理方式
2019/12/19 Python
django admin后管定制-显示字段的实例
2020/03/11 Python
pandas 强制类型转换 df.astype实例
2020/04/09 Python
python-jwt用户认证食用教学的实现方法
2021/01/19 Python
蔻驰法国官网:COACH法国
2018/11/14 全球购物
我的applet原先好好的, 一放到web server就会有问题,为什么?
2016/05/10 面试题
工厂门卫岗位职责
2013/11/25 职场文书
消防战士优秀事迹材料
2014/02/13 职场文书
优秀广告词大全
2014/03/19 职场文书
雷锋精神演讲稿
2014/05/13 职场文书
教师职位说明书
2014/07/29 职场文书
windows11选中自动复制怎么开启? Win11自动复制所选内容的方法
2022/07/23 数码科技