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 相关文章推荐
javascript String 对象
Apr 25 Javascript
Prototype Array对象 学习
Jul 19 Javascript
使用jQuery内容过滤选择器选择元素实例讲解
Apr 18 Javascript
javascript分页代码实例分享(js分页)
Dec 13 Javascript
用js控制组织结构图可以任意拖拽到指定位置
Jan 17 Javascript
js实现Select下拉框具有输入功能的方法
Feb 06 Javascript
在JS中操作时间之getUTCMilliseconds()方法的使用
Jun 10 Javascript
仿iframe效果Aajx文件上传实例
Nov 18 Javascript
jQuery扩展实现text提示还能输入多少字节的方法
Nov 28 Javascript
Angular 4.x中表单Reactive Forms详解
Apr 25 Javascript
JavaScript基础心法 数据类型
Mar 05 Javascript
jQuery无冲突模式详解
Jan 17 jQuery
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遍历文件夹所有文件子文件夹函数代码
2013/11/27 PHP
浅析PHP的静态成员函数效率更高的原因
2014/06/13 PHP
PHP比较运算符的详细介绍
2015/09/29 PHP
WordPress中访客登陆实现邮件提醒的PHP脚本实例分享
2015/12/14 PHP
用js实现键盘方向键翻页功能的代码
2007/06/03 Javascript
如何用js控制css中的float的代码
2007/08/16 Javascript
Javascript中call与apply的学习笔记
2014/09/22 Javascript
js实现当前输入框高亮显示的方法
2015/08/19 Javascript
Underscore源码分析
2015/12/30 Javascript
AngularJS中监视Scope变量以及外部调用Scope方法
2016/01/23 Javascript
Bootstrap每天必学之日期控制
2016/03/07 Javascript
javascript数组遍历的方法实例分析
2016/09/13 Javascript
基于slideout.js实现移动端侧边栏滑动特效
2016/11/28 Javascript
vue2.0实现导航菜单切换效果
2017/05/08 Javascript
微信小程序实现弹出菜单动画
2019/06/21 Javascript
vue el-table实现行内编辑功能
2019/12/11 Javascript
记录微信小程序 height: calc(xx - xx);无效问题
2019/12/30 Javascript
javascript 使用sleep函数的常见方法详解
2020/04/26 Javascript
[03:35]2018年度DOTA2最佳辅助位选手5号位-完美盛典
2018/12/17 DOTA
python如果快速判断数字奇数偶数
2019/11/13 Python
Python 生成一个从0到n个数字的列表4种方法小结
2019/11/28 Python
如何将 awk 脚本移植到 Python
2019/12/09 Python
Python 使用 prettytable 库打印表格美化输出功能
2019/12/26 Python
python如何把字符串类型list转换成list
2020/02/18 Python
Keras中的多分类损失函数用法categorical_crossentropy
2020/06/11 Python
英国最大的经认证的有机超市:Planet Organic
2018/02/02 全球购物
写出一个方法实现冒泡排序
2016/07/08 面试题
介绍一下Linux内核的排队自旋锁
2014/08/27 面试题
美德少年事迹材料
2014/01/23 职场文书
致跳远运动员广播稿
2014/02/11 职场文书
乡村教师党员四风问题对照检查材料思想汇报
2014/10/08 职场文书
财务人员个人工作总结
2015/02/27 职场文书
学校开除通知书
2015/04/25 职场文书
活动费用申请报告
2015/05/15 职场文书
医院感染管理制度
2015/08/05 职场文书
Python使用openpyxl模块处理Excel文件
2022/06/05 Python