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 拖拽雏形中的一些问题(逐行分析代码,让你轻松了拖拽的原理)
Jan 23 Javascript
jQuery右侧选项卡焦点图片轮播特效代码分享
Sep 05 Javascript
js实现点击获取验证码倒计时效果
Jan 28 Javascript
jQuery 1.9.1源码分析系列(十三)之位置大小操作
Dec 02 Javascript
Javascript闭包与函数柯里化浅析
Jun 22 Javascript
AngularJS 中的Promise --- $q服务详解
Sep 14 Javascript
JS常用倒计时代码实例总结
Feb 07 Javascript
video.js使用改变ui过程
Mar 05 Javascript
Angular2监听页面大小变化的解决方法
Oct 09 Javascript
JS实现用特殊符号替换字符串的中间部分区域的实例代码
Jul 24 Javascript
基于Bootstrap下拉框插件bootstrap-select使用方法详解
Aug 07 Javascript
详解vue 不同环境配置不同的打包命令
Apr 07 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遍历目录与文件夹的多种方法详解
2013/11/14 PHP
php对包含html标签的字符串进行截取的函数分享
2014/06/19 PHP
PHP和Shell实现检查SAMBA与NFS Server是否存在
2015/01/07 PHP
php将字符串转换成16进制的方法
2015/03/17 PHP
php超快高效率统计大文件行数
2015/07/05 PHP
总结PHP代码规范、流程规范、git规范
2018/06/18 PHP
PHP的介绍以及优势详细分析
2019/09/05 PHP
PHP7生产环境队列Beanstalkd用法详解
2020/05/19 PHP
jQuery的选择器中的通配符使用介绍
2014/03/20 Javascript
Javascript中实现String.startsWith和endsWith方法
2015/06/10 Javascript
基于jQuery实现仿百度首页换肤背景图片切换代码
2015/08/25 Javascript
jQuery手机拨号界面特效代码分享
2015/08/27 Javascript
JavaScript基于DOM操作实现简单的数学运算功能示例
2017/01/16 Javascript
JQuery查找子元素find()和遍历集合each的方法总结
2017/03/07 Javascript
AjaxUpLoad.js实现文件上传
2018/03/05 Javascript
vue.js轮播图组件使用方法详解
2018/07/03 Javascript
js实现黑白div块画空心的图形
2018/12/13 Javascript
jQuery添加新内容的四个常用方法分析【append,prepend,after,before】
2019/03/19 jQuery
TypeScript中的方法重载详解
2019/04/12 Javascript
JavaScrip如果基于url实现图片下载
2020/07/03 Javascript
用Python进行TCP网络编程的教程
2015/04/29 Python
Python序列操作之进阶篇
2016/12/08 Python
centos6.7安装python2.7.11的具体方法
2017/01/16 Python
python通过百度地图API获取某地址的经纬度详解
2018/01/28 Python
Python cookbook(数据结构与算法)将名称映射到序列元素中的方法
2018/03/22 Python
unittest+coverage单元测试代码覆盖操作实例详解
2018/04/04 Python
python实现贪吃蛇双人大战
2020/04/18 Python
Python中zipfile压缩文件模块的基本使用教程
2020/06/14 Python
浅析CSS3 用text-overflow解决文字排版问题
2020/10/28 HTML / CSS
英国第二大营养品供应商:Vitabiotics
2016/10/01 全球购物
给面试官的感谢信
2014/02/01 职场文书
有兼职工作经历的简历自我评价
2014/03/07 职场文书
大四毕业生自荐书
2014/07/05 职场文书
导游词之大雁塔景区
2019/09/17 职场文书
python基础之文件操作
2021/10/24 Python
Redis 限流器
2022/05/15 Redis