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 读取元素的CSS信息的代码
Feb 07 Javascript
原生js实现class的添加和删除简单代码
Jul 12 Javascript
Js获取当前日期时间及格式化代码
Sep 17 Javascript
js实现图片360度旋转
Jan 22 Javascript
总结JavaScript在IE9之前版本中内存泄露问题
Apr 28 Javascript
微信小程序日历组件使用方法详解
Dec 29 Javascript
说说如何在Vue.js中实现数字输入组件的方法
Jan 08 Javascript
微信小程序MUI导航栏透明渐变功能示例(通过改变rgba的a值实现)
Jan 24 Javascript
npm的lock机制解析
Jun 20 Javascript
微信小程序使用车牌号输入法的示例代码
Aug 20 Javascript
vue.js 实现a标签href里添加参数
Nov 12 Javascript
vue.config.js中配置Vue的路径别名的方法
Feb 11 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的一个完美GIF等比缩放类,附带去除缩放黑背景
2014/04/01 PHP
php使用SAE原生Mail类实现各种类型邮件发送的方法
2016/10/10 PHP
零基础php编程好学吗
2019/10/11 PHP
prototype Element学习笔记(篇二)
2008/10/26 Javascript
js window.open弹出新的网页窗口
2014/01/16 Javascript
Jquery Post处理后不进入回调的原因及解决方法
2014/07/15 Javascript
JavaScript基础篇(3)之Object、Function等引用类型
2015/11/30 Javascript
JS前端开发判断是否是手机端并跳转操作(小结)
2017/02/05 Javascript
JS给按钮添加跳转功能类似a标签
2017/05/30 Javascript
Vuejs中使用markdown服务器端渲染的示例
2017/11/22 Javascript
Vue 重置组件到初始状态的方法示例
2018/10/10 Javascript
Vue CLI3中使用compass normalize的方法
2019/05/30 Javascript
layui 地区三级联动 form select 渲染的实例
2019/09/27 Javascript
javascript canvas封装动态时钟
2020/09/30 Javascript
[03:07]完美世界DOTA2联赛PWL DAY10 决赛集锦
2020/11/11 DOTA
Python ORM框架SQLAlchemy学习笔记之关系映射实例
2014/06/10 Python
Python写入CSV文件的方法
2015/07/08 Python
从django的中间件直接返回请求的方法
2018/05/30 Python
python 输出所有大小写字母的方法
2019/01/02 Python
python 实现查找文件并输出满足某一条件的数据项方法
2019/06/12 Python
Python chardet库识别编码原理解析
2020/02/18 Python
Python修改列表值问题解决方案
2020/03/06 Python
python3:excel操作之读取数据并返回字典 + 写入的案例
2020/09/01 Python
关于HTML5+ API plusready的兼容问题
2020/11/20 HTML / CSS
伦敦所有西区剧院演出官方票务代理:Theatre Tickets Direct
2017/05/26 全球购物
Guess美国官网:美国知名服装品牌
2019/04/08 全球购物
高校生生产实习自我鉴定
2013/09/21 职场文书
路政管理专业个人自荐信范文
2013/11/30 职场文书
完美的中文自荐信
2014/05/24 职场文书
松材线虫病防治方案
2014/06/15 职场文书
2014年高中生自我评价范文
2014/09/26 职场文书
师德师风个人总结
2015/02/06 职场文书
Python激活Anaconda环境变量的详细步骤
2021/06/08 Python
关于python中模块和重载的问题
2021/11/02 Python
Win11怎样将锁屏账户头像图片改成动画视频
2021/11/21 数码科技
Eclipse+Java+Swing+Mysql实现电影购票系统(详细代码)
2022/01/18 Java/Android