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类继承机制的原理分析
Sep 12 Javascript
JavaScript 学习笔记一些小技巧
Mar 28 Javascript
使用jQuery向asp.net Mvc传递复杂json数据-ModelBinder篇
May 07 Javascript
再谈Jquery Ajax方法传递到action(补充)
May 12 Javascript
JS解析XML文件和XML字符串详解
Apr 17 Javascript
JS实现来回出现文字的状态栏特效代码
Oct 31 Javascript
jQuery使用$获取对象后检查该对象是否存在的实现方法
Sep 04 Javascript
js入门之Function函数的使用方法【新手必看】
Nov 22 Javascript
JavaScript组件开发之输入框加候选框
Mar 10 Javascript
JavaScript实现换肤功能
Sep 15 Javascript
javascript函数的节流[throttle]与防抖[debounce]
Nov 15 Javascript
原生js实现trigger方法示例代码
May 22 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中的观察者模式
2010/03/24 PHP
对比分析php中Cookie与Session的异同
2016/02/19 PHP
PHP 中提示undefined index如何解决(多种方法)
2016/03/16 PHP
php简单复制文件的方法
2016/05/09 PHP
解决jquery的datepicker的本地化以及Today问题
2012/05/23 Javascript
javascript 表格内容排序 简单操作示例代码
2014/01/03 Javascript
js点击出现悬浮窗效果不使用JQuery插件
2014/01/20 Javascript
javascript校验价格合法性实例(必须输入2位小数)
2014/05/05 Javascript
js实现获取焦点后光标在字符串后
2014/09/17 Javascript
Angularjs编写KindEditor,UEidtor,jQuery指令
2015/01/28 Javascript
JavaScript 事件绑定及深入
2015/04/13 Javascript
JavaScript利用HTML DOM进行文档操作的方法
2016/03/28 Javascript
深入掌握 react的 setState的工作机制
2017/09/27 Javascript
2种在vue项目中使用百度地图的简单方法
2018/09/28 Javascript
Jquery实现无缝向上循环滚动列表的特效
2019/02/13 jQuery
JavaScript实现联动菜单特效
2020/01/07 Javascript
vue+elementUI(el-upload)图片压缩,默认同比例压缩操作
2020/08/10 Javascript
解决ant Design Search无法输入内容的问题
2020/10/29 Javascript
python中使用mysql数据库详细介绍
2015/03/27 Python
python使用webbrowser浏览指定url的方法
2015/04/04 Python
详解Python中的Cookie模块使用
2015/07/06 Python
python3利用Socket实现通信的方法示例
2019/05/06 Python
六行python代码的爱心曲线详解
2019/05/17 Python
使用python telnetlib批量备份交换机配置的方法
2019/07/25 Python
详解Python GUI编程之PyQt5入门到实战
2020/12/10 Python
CSS3属性box-sizing使用指南
2014/12/09 HTML / CSS
LivingSocial英国:英国本地优惠
2019/02/22 全球购物
美国在线购买和出售礼品卡网站:EJ Gift Cards
2019/06/09 全球购物
香港零食网购:上仓胃子
2020/06/08 全球购物
清洁工表扬信
2014/01/08 职场文书
2014年廉洁自律承诺书
2014/05/26 职场文书
2014年党委工作总结
2014/11/22 职场文书
2014年保育员个人工作总结
2014/12/02 职场文书
班级管理经验交流材料
2015/11/02 职场文书
Django操作cookie的实现
2021/05/26 Python
JS前端轻量fabric.js系列物体基类
2022/08/05 Javascript