JS实现汉字与Unicode码相互转换的方法详解


Posted in Javascript onApril 28, 2017

本文实例讲述了JS实现汉字与Unicode码相互转换的方法。分享给大家供大家参考,具体如下:

js文件中,有些变量的值可能会含有汉字,画面引入js以后,有可能会因为字符集的原因,把里面的汉字都变成乱码。后来发现网上的一些js里会把变量中的汉字都表示成”\u“开头的16进制编码,这样应该可以解决上面的问题。

最近有时间在网上查找了一下实现方式,一种比较大众化的:

function tounicode(data)
{
  if(data == '') return '请输入汉字';
  var str ='';
  for(var i=0;i<data.length;i++)
  {
   str+="\\u"+parseInt(data[i].charCodeAt(0),10).toString(16);
  }
  return str;
}
function tohanzi(data)
{
  if(data == '') 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 GB2312UnicodeConverter={
    ToUnicode:function(str){
     return escape(str).toLocaleLowerCase().replace(/%u/gi,'\\u');
    }
    ,ToGB2312:function(str){
     return unescape(str.replace(/\\u/gi,'%u'));
    }
};

不过都有些问题,这两种方式,都会把出汉字以外的其他字符都给转换掉,做个简单的加密解密算法还是可以的,但要是用来处理js文件,把回车、换行、空格、tab字符全换了,转完以后,js文件也没法运行了。

偷懒不成,只能自己按照上面代码处理逻辑写一个了,只要保证只转换汉字字符就可以了:

// 汉字转为Unicode字符码表示
function toUnicode(s){
    return s.replace(/([\u4E00-\u9FA5]|[\uFE30-\uFFA0])/g,function(){
     return "\\u" + RegExp["$1"].charCodeAt(0).toString(16);
    });
}

方法写完了,为了方便转换js文件的内容,再做个简单的页面,加一个button在画面上。先要做的是在js文件Ctr+A,Ctr+C,把内容拷贝 到剪贴板里,然后再新建的这个画面上,点button的时候,从剪贴板里把内容读出来,调用方法转一下,在把内容放回剪贴板。然后再到 js文件里Ctr+A,Ctr+V一下就可以了。代码如下:

<html>
 <head>
  <script language="javascript">
   function Window_Load(){
     var G = document.getElementById;
     G("cmdToU").onclick = function(){
       clipboardData.setData("text",toUnicode(clipboardData.getData("text")));
     }
   }
   // 汉字转为Unicode字符码表示
// 原函数是,红色是是错误的,导致多个中文时,结果都是最后一个汉字的unicode码;
   function toUnicode(s){
     return s.replace(/([\u4E00-\u9FA5]|[\uFE30-\uFFA0])/g,function(){
      return "\\u" + RegExp["$1"].charCodeAt(0).toString(16);
     });
   }
// 经@b4b4指正,现更改
function toUnicode(s){
     return s.replace(/([\u4E00-\u9FA5]|[\uFE30-\uFFA0])/g,function(newStr){
      return "\\u" + newStr.charCodeAt(0).toString(16);
});
}
</script>
</head>
<body onload="Window_Load();">
<button id="cmdToU">汉字转为Unicode</button>
</body>
</html>

这个页面只能在IE内核的浏览器下才能正常运行,因为clipboardData对象好像只在IE下面有。

Javascript 相关文章推荐
Json2Template.js 基于jquery的插件 绑定JavaScript对象到Html模板中
Oct 29 Javascript
JQuery中对Select的option项的添加、删除、取值
Aug 25 Javascript
JavaScript中的apply和call函数详解
Jul 20 Javascript
jQuery CSS()方法改变现有的CSS样式
Aug 20 Javascript
JavaScript获取当前网页最后修改时间的方法
Apr 03 Javascript
js强制把网址设为默认首页
Sep 29 Javascript
基于jquery实现即时检查格式是否正确的表单
May 06 Javascript
Jquery Easyui验证组件ValidateBox使用详解(20)
Dec 18 Javascript
解决Jstree 选中父节点时被禁用的子节点也会选中的问题
Dec 27 Javascript
Vue v2.4中新增的$attrs及$listeners属性使用教程
Jan 08 Javascript
vue3.0封装轮播图组件的步骤
Mar 04 Vue.js
深入讲解Vue中父子组件通信与事件触发
Mar 22 Vue.js
JS组件系列之JS组件封装过程详解
Apr 28 #Javascript
JS实现的Unicode编码转换操作示例
Apr 28 #Javascript
webpack配置文件和常用配置项介绍
Apr 28 #Javascript
JS 组件系列之 bootstrap treegrid 组件封装过程
Apr 28 #Javascript
JavaScript实现简单的四则运算计算器完整实例
Apr 28 #Javascript
vue实现动态数据绑定
Apr 28 #Javascript
Vue实现动态响应数据变化
Apr 28 #Javascript
You might like
Yii框架中memcache用法实例
2014/12/03 PHP
php中的动态调用实例分析
2015/01/07 PHP
php图像处理函数imagecopyresampled用法详解
2016/12/02 PHP
php图形jpgraph操作实例分析
2017/02/22 PHP
php+ajax实现商品对比功能示例
2019/04/13 PHP
JS实现单行文字不间断向上滚动的方法
2015/01/29 Javascript
编写自己的jQuery提示框(Tip)插件
2015/02/05 Javascript
使用jquery制作弹出框效果
2015/04/03 Javascript
在JavaScript中访问字符串的子串
2015/07/07 Javascript
纯css实现窗户玻璃雨滴逼真效果
2015/08/23 Javascript
基于javascript html5实现多文件上传
2016/03/03 Javascript
Bootstrap三种表单布局的使用方法
2016/06/21 Javascript
基于 webpack2 实现的多入口项目脚手架详解
2017/06/26 Javascript
详解各版本React路由的跳转的方法
2018/05/10 Javascript
在vue项目中引入高德地图及其UI组件的方法
2018/09/04 Javascript
vuejs+element UI点击编辑表格某一行时获取内容填入表单的示例
2018/10/31 Javascript
vue中使用微信公众号js-sdk踩坑记录
2019/03/29 Javascript
[01:42]DOTA2 – 虚无之灵
2019/08/25 DOTA
在Windows8上的搭建Python和Django环境
2014/07/03 Python
python 3.5下xadmin的使用及修复源码bug
2017/05/10 Python
python 3利用BeautifulSoup抓取div标签的方法示例
2017/05/28 Python
深入理解Django的中间件middleware
2018/03/14 Python
10 行 Python 代码教你自动发送短信(不想回复工作邮件妙招)
2018/10/11 Python
python实现DEM数据的阴影生成的方法
2019/07/23 Python
python Django编写接口并用Jmeter测试的方法
2019/07/31 Python
Python偏函数Partial function使用方法实例详解
2020/06/17 Python
Python如何创建装饰器时保留函数元信息
2020/08/07 Python
Django 实现图片上传和下载功能
2020/12/31 Python
HTML5实时语音通话聊天MP3压缩传输3KB每秒
2019/08/28 HTML / CSS
自我鉴定思想方面
2013/10/07 职场文书
函授本科毕业生自我鉴定
2013/10/16 职场文书
应届行政管理专业个人自我评价
2013/12/28 职场文书
最新创业融资计划书
2014/01/19 职场文书
服务承诺书范文
2014/05/19 职场文书
2015年志愿者服务工作总结
2015/04/20 职场文书
聘任书的格式及模板
2019/10/28 职场文书