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基础的动画教程,直观易懂
Jan 10 Javascript
一步一步制作jquery插件Tabs实现过程
Jul 06 Javascript
js 调用本地exe的例子(支持IE内核的浏览器)
Dec 26 Javascript
js控制的回到页面顶端goTop的代码实现
Mar 20 Javascript
谈谈javascript中使用连等赋值操作带来的问题
Nov 26 Javascript
AngularJS中实现用户访问的身份认证和表单验证功能
Apr 21 Javascript
Vue Element使用icon图标教程详解(第三方)
Feb 07 Javascript
Vue表单demo v-model双向绑定问题
Jun 29 Javascript
scrapyd schedule.json setting 传入多个值问题
Aug 07 Javascript
jquery树形插件zTree高级使用详解
Aug 16 jQuery
AI小程序之语音听写来了,十分钟掌握百度大脑语音听写全攻略
Mar 13 Javascript
vue+elementUI动态增加表单项并添加验证的代码详解
Dec 17 Vue.js
浅析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
php5.2以下版本无json_decode函数的解决方法
2014/05/25 PHP
yii实现图片上传及缩略图生成的方法
2014/12/04 PHP
Laravel下生成验证码的类
2017/11/15 PHP
阿里对象存储OSS在laravel框架中的使用方法
2019/10/13 PHP
JavaScript 页面坐标相关知识整理
2010/01/09 Javascript
JavaScript 读取元素的CSS信息的代码
2010/02/07 Javascript
基于jquery中children()与find()的区别介绍
2013/04/26 Javascript
使用jQuery避免鼠标双击的解决方案
2013/08/21 Javascript
jquery实现页面图片等比例放大缩小功能
2014/02/12 Javascript
jQuery实现跨域
2015/02/03 Javascript
浅谈Javascript数组索引
2015/07/29 Javascript
JavaScript实现仿淘宝商品购买数量的增减效果
2016/01/22 Javascript
BootStrap 智能表单实战系列(十)自动完成组件的支持
2016/06/13 Javascript
实例讲解JavaScript中的this指向错误解决方法
2016/06/13 Javascript
快速移动鼠标触发问题及解决方法(ECharts外部调用保存为图片操作及工作流接线mouseenter和mouseleave)
2016/08/29 Javascript
Bootstrap对话框使用实例讲解
2016/09/24 Javascript
nodejs爬虫遇到的乱码问题汇总
2017/04/07 NodeJs
jQuery Json数据格式排版高亮插件json-viewer.js使用方法详解
2017/06/12 jQuery
js 公式编辑器 - 自定义匹配规则 - 带提示下拉框 - 动态获取光标像素坐标
2018/01/04 Javascript
vue+axios+element ui 实现全局loading加载示例
2018/09/11 Javascript
了解javascript中变量及函数的提升
2019/05/27 Javascript
layui的布局和表格的渲染以及动态生成表格的方法
2019/09/18 Javascript
vue实现列表滚动的过渡动画
2020/06/29 Javascript
让你30分钟快速掌握vue3教程
2020/10/26 Javascript
scrapy自定义pipeline类实现将采集数据保存到mongodb的方法
2015/04/16 Python
程序员的七夕用30行代码让Python化身表白神器
2019/08/07 Python
如何查看python关键字
2021/01/17 Python
铭立家具面试题
2012/12/06 面试题
施工安全协议书
2013/12/11 职场文书
档案室主任岗位职责
2014/02/12 职场文书
项目采购员岗位职责
2014/04/15 职场文书
实习协议书
2015/01/27 职场文书
罚站检讨书
2015/01/29 职场文书
草房子读书笔记
2015/06/29 职场文书
高中优秀作文(范文)
2019/08/15 职场文书
怎样做好公众演讲能力?
2019/08/28 职场文书