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 相关文章推荐
Tab页界面 用jQuery及Ajax技术实现(php后台)
Oct 12 Javascript
使用jquery自定义鼠标样式满足个性需求
Nov 05 Javascript
ajax读取数据后使用jqchart显示图表的方法
Jun 10 Javascript
前端JS面试中常见的算法问题总结
Dec 23 Javascript
Bootstrap.css与layDate日期选择样式起冲突的解决办法
Apr 07 Javascript
Angular使用 ng-img-max 调整浏览器中的图片的示例代码
Aug 17 Javascript
element-ui 表格实现单元格可编辑的示例
Feb 26 Javascript
JavaScript实现读取与输出XML文件数据的方法示例
Jun 05 Javascript
Node.js中的不安全跳转如何防御详解
Oct 21 Javascript
vue实现可视化可拖放的自定义表单的示例代码
Mar 20 Javascript
如何利用Node.js与JSON搭建简单的动态服务器
Jun 16 Javascript
OpenLayer3自定义测量控件MeasureTool
Sep 28 Javascript
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
深入php define()函数以及defined()函数的用法详解
2013/06/05 PHP
php保存信息到当前Session的方法
2015/03/16 PHP
PHP异常处理浅析
2015/05/12 PHP
php简单图像创建入门实例
2015/06/10 PHP
wampserver改变默认网站目录的办法
2015/08/05 PHP
PHP引用的调用方法分析
2016/04/25 PHP
Yii2框架实现利用mpdf创建pdf文件功能示例
2019/02/08 PHP
巧妙破除网页右键禁用的十大绝招
2006/08/12 Javascript
javascript中的undefined和not defined区别示例介绍
2014/02/26 Javascript
在css加载完毕后自动判断页面是否加入css或js文件
2014/09/10 Javascript
Lua表达式和控制结构学习笔记
2014/12/15 Javascript
Js实现无刷新删除内容
2015/04/29 Javascript
基于jquery实现表格无刷新分页
2016/01/07 Javascript
学习javascript文件加载优化
2016/02/19 Javascript
json格式的javascript对象用法分析
2016/07/04 Javascript
BootStrap日期控件在模态框中选择时间下拉菜单无效的原因及解决办法(火狐下不能点击)
2016/08/18 Javascript
JSON对象 详解及实例代码
2016/10/18 Javascript
详解jQuery简单的表单应用
2016/12/16 Javascript
微信小程序实现实时圆形进度条的方法示例
2017/02/24 Javascript
vue2.0 computed 计算list循环后累加值的实例
2018/03/07 Javascript
跟混乱的页面弹窗说再见
2019/04/11 Javascript
Vue中props的详解
2019/05/16 Javascript
微信小程序scroll-view的滚动条设置实现
2020/03/02 Javascript
微信小程序用canvas画图并分享
2020/03/09 Javascript
解决Vue大括号字符换行踩的坑
2020/11/09 Javascript
[00:56]2014DOTA2国际邀请赛 DK、iG 赛前探访
2014/07/10 DOTA
[02:14]2016国际邀请赛中国区预选赛Ehome晋级之路
2016/07/01 DOTA
跟老齐学Python之重回函数
2014/10/10 Python
详解python3中的真值测试
2018/08/13 Python
对django的User模型和四种扩展/重写方法小结
2019/08/17 Python
python实现的多任务版udp聊天器功能案例
2019/11/13 Python
python实现一个简单RPC框架的示例
2020/10/28 Python
什么是CSS3 HSLA色彩模式?HSLA模拟渐变色条
2016/04/26 HTML / CSS
html5用video标签流式加载的实现
2020/05/20 HTML / CSS
马来西亚时装购物网站:ZALORA马来西亚
2017/03/14 全球购物
如何通过一篇文章了解Python中的生成器
2022/04/02 Python