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 相关文章推荐
原生Ajax 和jQuery Ajax的区别示例分析
Dec 17 Javascript
JavaScript获取网页表单action属性的方法
Apr 02 Javascript
JavaScript设置、获取、清除单值和多值cookie的方法
Nov 17 Javascript
JavaScript动态创建div等元素实例讲解
Jan 06 Javascript
使用基于Node.js的构建工具Grunt来发布ASP.NET MVC项目
Feb 15 Javascript
JavaScript入门系列之知识点总结
Mar 24 Javascript
Javascript 正则表达式校验数字的简单实例
Nov 02 Javascript
Vue数据驱动模拟实现3
Jan 11 Javascript
webpack配置sass模块的加载的方法
Jul 30 Javascript
vue 里面使用axios 和封装的示例代码
Sep 01 Javascript
在create-react-app中使用sass的方法示例
Oct 01 Javascript
微信小程序如何实现radio单选框单击打勾和取消
Jan 21 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 mysql数据库操作分页类
2008/06/04 PHP
php mysql Errcode: 28 终极解决方法
2009/07/01 PHP
php获取文件名后缀常用方法小结
2015/02/24 PHP
php在apache环境下实现gzip配置方法
2015/04/02 PHP
php编写简单的文章发布程序
2015/06/18 PHP
转一个日期输入控件,支持FF
2007/04/27 Javascript
javascript 必知必会之closure
2009/09/21 Javascript
学习JavaScript的最佳方法分享
2011/10/21 Javascript
js获得当前系统日期时间的方法
2015/05/06 Javascript
jQuery实现获取绑定自定义事件元素的方法
2015/12/02 Javascript
jquery实现垂直和水平菜单导航栏
2020/08/27 Javascript
微信小程序之仿微信漂流瓶实例
2016/12/09 Javascript
微信小程序页面开发注意事项整理
2017/05/18 Javascript
vue 2.x 中axios 封装的get 和post方法
2018/02/28 Javascript
vue.js与element-ui实现菜单树形结构的解决方法
2018/04/21 Javascript
vue中使用cookies和crypto-js实现记住密码和加密的方法
2018/10/18 Javascript
vue使用pdfjs显示PDF可复制的实现方法
2018/12/14 Javascript
「中高级前端面试」JavaScript手写代码无敌秘籍(推荐)
2019/04/08 Javascript
Angular 中使用 FineReport不显示报表直接打印预览
2019/08/21 Javascript
JS页面动态绘图工具SVG,Canvas,VML介简介
2020/10/16 Javascript
详解vue 组件注册
2020/11/20 Vue.js
Python 含参构造函数实例详解
2017/05/25 Python
python内置函数:lambda、map、filter简单介绍
2017/11/16 Python
python打包成so文件过程解析
2019/09/28 Python
ubuntu 18.04 安装opencv3.4.5的教程(图解)
2019/11/04 Python
使用python的turtle绘画滑稽脸实例
2019/11/21 Python
python 操作mysql数据中fetchone()和fetchall()方式
2020/05/15 Python
keras绘制acc和loss曲线图实例
2020/06/15 Python
迪卡侬荷兰官网:Decathlon荷兰
2017/10/29 全球购物
个人简历中的自我评价范例
2013/10/29 职场文书
某同学的自我鉴定范文
2013/12/26 职场文书
大一学生职业生涯规划
2014/03/11 职场文书
求职信范文怎么写
2015/03/19 职场文书
go 原生http web 服务跨域restful api的写法介绍
2021/04/27 Golang
基于Redission的分布式锁实战
2022/08/14 Redis
Python使用pandas导入xlsx格式的excel文件内容操作代码
2022/12/24 Python