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 调试器简介
Feb 21 Javascript
Javascript 原型和继承(Prototypes and Inheritance)
Apr 01 Javascript
js 控制下拉菜单刷新的方法
Mar 03 Javascript
如何用JavaScript动态呼叫函数(两种方式)
May 03 Javascript
js导出格式化的excel 实例方法
Jul 17 Javascript
js清除input中type等于file的值域(示例代码)
Dec 24 Javascript
Windows系统下Node.js的简单入门教程
Jun 23 Javascript
基于javascript代码检测访问网页的浏览器呈现引擎、平台、Windows操作系统、移动设备和游戏系统
Dec 03 Javascript
jQuery实现邮箱下拉列表自动补全功能
Sep 08 Javascript
jsonp跨域请求详解
Jul 13 Javascript
微信小程序实现聊天对话(文本、图片)功能
Jul 06 Javascript
JavaScript实现拖动对话框效果的实现代码
Oct 12 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 var_dump遍历对象属性的函数与应用代码
2010/06/04 PHP
CodeIgniter配置之database.php用法实例分析
2016/01/20 PHP
JS+CSS实现鼠标滑过时动态翻滚的导航条效果
2015/09/24 Javascript
JS函数的几种定义方式分析
2015/12/17 Javascript
jQuery插件实现适用于移动端的地址选择器
2016/02/18 Javascript
js添加千分位的实现代码(超简单)
2016/08/01 Javascript
JavaScript数组去重的几种方法效率测试
2016/10/23 Javascript
bootstrap使用validate实现简单校验功能
2016/12/02 Javascript
jsTree事件和交互以及插件plugins详解
2017/08/29 Javascript
详解js的作用域、预解析机制
2018/02/05 Javascript
Nodejs核心模块之net和http的使用详解
2019/04/02 NodeJs
layui 图片上传+表单提交+ Spring MVC的实例
2019/09/21 Javascript
jquery实现淡入淡出轮播图效果
2020/12/13 jQuery
浅析python中SQLAlchemy排序的一个坑
2017/02/24 Python
Django csrf 两种方法设置form的实例
2019/02/03 Python
python 实现return返回多个值
2019/11/19 Python
python实现tail实时查看服务器日志示例
2019/12/24 Python
jenkins+python自动化测试持续集成教程
2020/05/12 Python
python属于解释型语言么
2020/06/15 Python
Club Monaco加拿大官网:设计师男女服装
2019/09/29 全球购物
会计专业自荐信
2013/12/02 职场文书
写给爸爸的道歉信
2014/01/15 职场文书
社区党总支书记先进事迹材料
2014/01/24 职场文书
网络工程师专家职业发展路线
2014/02/14 职场文书
便利店促销方案
2014/02/20 职场文书
商业计算机应用专业自荐书
2014/06/09 职场文书
2014年度安全生产目标管理责任书
2014/07/25 职场文书
质量在我心中演讲稿
2014/09/02 职场文书
2014年作风建设工作总结
2014/10/29 职场文书
骨干教师事迹材料
2014/12/17 职场文书
2015年感恩母亲节活动方案
2015/05/04 职场文书
聘任书的格式及模板
2019/10/28 职场文书
python中__slots__节约内存的具体做法
2021/07/04 Python
Python可变集合和不可变集合的构造方法大全
2021/12/06 Python
Kubernetes部署实例并配置Deployment、网络映射、副本集
2022/04/01 Servers
python套接字socket通信
2022/04/01 Python