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 正则替换 replace(regExp, function)用法
May 22 Javascript
Javascript:为input设置readOnly属性(示例讲解)
Dec 25 Javascript
Eclipse配置Javascript开发环境图文教程
Jan 29 Javascript
深入理解JavaScript系列(38):设计模式之职责链模式详解
Mar 04 Javascript
整理Javascript函数学习笔记
Dec 01 Javascript
vue.js中$watch的用法示例
Oct 04 Javascript
微信小程序 loading(加载中提示框)实例
Oct 28 Javascript
AngularJS入门教程之数据绑定原理详解
Nov 02 Javascript
jquery二级目录选中当前页的css样式
Dec 08 Javascript
Node.js使用MongoDB的ObjectId作为查询条件的方法
Sep 10 Javascript
es6函数之rest参数用法实例分析
Apr 18 Javascript
在Vue中使用Echarts可视化库的完整步骤记录
Nov 18 Vue.js
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自定义函数收代码
2010/08/01 PHP
分享一个超好用的php header下载函数
2014/01/31 PHP
解密ThinkPHP3.1.2版本之独立分组功能应用
2014/06/19 PHP
php 删除cookie方法详解
2014/12/01 PHP
php中$_POST与php://input的区别实例分析
2015/01/07 PHP
PHP中使用Imagick读取pdf并生成png缩略图实例
2015/01/21 PHP
手把手编写PHP框架 深入了解MVC运行流程
2016/09/19 PHP
Laravel框架查询构造器简单示例
2019/05/08 PHP
EXT中xtype的含义分析
2010/01/07 Javascript
点击页面其它地方隐藏该div的两种思路
2013/11/18 Javascript
node.js中的emitter.on方法使用说明
2014/12/10 Javascript
jquery validate和jquery form 插件组合实现验证表单后AJAX提交
2015/08/26 Javascript
浅谈JavaScript超时调用和间歇调用
2015/08/30 Javascript
BootStrap 轮播插件(carousel)支持左右手势滑动的方法(三种)
2016/07/07 Javascript
jQuery实现可展开折叠的导航效果示例
2016/09/12 Javascript
JS组件系列之使用HTML标签的data属性初始化JS组件
2016/09/14 Javascript
ant-design-vue 快速避坑指南(推荐)
2020/01/21 Javascript
JavaScript如何判断对象有某属性
2020/07/03 Javascript
[00:10]DOTA2全国高校联赛 以DOTA2会友
2018/05/30 DOTA
详解Numpy中的广播原则/机制
2018/09/20 Python
python程序控制NAO机器人行走
2019/04/29 Python
Python上下文管理器全实例详解
2019/11/12 Python
python中设置超时跳过,超时退出的方式
2019/12/13 Python
python GUI库图形界面开发之PyQt5表格控件QTableView详细使用方法与实例
2020/03/01 Python
keras训练曲线,混淆矩阵,CNN层输出可视化实例
2020/06/15 Python
python打包生成so文件的实现
2020/10/30 Python
英国灯具和灯泡网上商店:Lights.co.uk
2018/02/02 全球购物
Chicco婴儿用品美国官网:汽车座椅、婴儿推车、高脚椅等
2018/11/05 全球购物
跳蚤市场口号
2014/06/13 职场文书
植树节口号
2014/06/21 职场文书
党支部三严三实对照检查材料思想汇报
2014/09/29 职场文书
公司庆典欢迎词
2015/01/26 职场文书
协议书范文
2015/01/27 职场文书
企业投资意向书
2015/05/09 职场文书
js基础语法与maven项目配置教程案例
2021/07/15 Javascript
html中两种获取标签内的值的方法
2022/06/16 jQuery