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操作cookie的文章(设置,删除cookies)
Apr 01 Javascript
JS文本框追加多个下拉框的值的简单实例
Jul 12 Javascript
jQuery制作仿腾讯web qq用户体验桌面
Aug 20 Javascript
Javascript中设置默认参数值示例
Sep 11 Javascript
JavaScript link方法入门实例(给字符串加上超链接)
Oct 17 Javascript
jQuery实现类似老虎机滚动抽奖效果
Aug 06 Javascript
JavaScript实现为input与textarea自定义hover,focus效果的方法
Aug 21 Javascript
React复制到剪贴板的示例代码
Aug 22 Javascript
IntersectionObserver实现图片懒加载的示例
Sep 29 Javascript
JavaScript通过mouseover()实现图片变大效果的示例
Dec 20 Javascript
vue elementui form表单验证的实现
Nov 11 Javascript
easyUI 实现的后台分页与前台显示功能示例
Jun 01 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中session与cookie的比较
2015/01/27 PHP
PHP7之Mongodb API使用详解
2015/12/26 PHP
thinkphp中字符截取函数msubstr()用法分析
2016/01/09 PHP
基于PHP实现用户登录注册功能的详细教程
2020/08/04 PHP
原型方法的不同写法居然会影响调试的解决方法
2007/03/08 Javascript
javascript 限制输入脚本大全
2009/11/03 Javascript
基于jquery的滚动新闻列表
2010/06/19 Javascript
为JavaScript提供睡眠功能(sleep) 自编译JS引擎
2010/08/16 Javascript
jquery快捷动态绑定键盘事件的操作函数代码
2013/10/17 Javascript
JavaScript返回网页中锚点数目的方法
2015/04/03 Javascript
四种参数传递的形式——URL,超链接,js,form表单
2015/07/24 Javascript
java必学必会之static关键字
2015/12/03 Javascript
js实现常见的工具条效果
2017/03/02 Javascript
Vue.js实现价格计算器功能
2020/03/30 Javascript
AngularJS实现controller控制器间共享数据的方法示例
2017/10/30 Javascript
vue 运用mock数据的示例代码
2017/11/07 Javascript
在vscode里使用.vue代码模板的方法
2018/04/28 Javascript
JS实现区分中英文并统计字符个数的方法示例
2018/06/09 Javascript
vue用递归组件写树形控件的实例代码
2018/07/19 Javascript
最适应的vue.js的form提交涉及多种插件【推荐】
2018/08/27 Javascript
微信小程序之 catalog 切换实现解析
2019/09/12 Javascript
原生js+css调节音量滑块
2020/01/15 Javascript
ant design vue嵌套表格及表格内部编辑的用法说明
2020/10/28 Javascript
JavaScript实现图片合成下载的示例
2020/11/19 Javascript
让python 3支持mysqldb的解决方法
2017/02/14 Python
Python中标准模块importlib详解
2017/04/16 Python
python2 与 python3 实现共存的方法
2018/07/12 Python
pyinstaller打包单个exe后无法执行错误的解决方法
2019/06/21 Python
Pytorch使用MNIST数据集实现基础GAN和DCGAN详解
2020/01/10 Python
Jupyter打开图形界面并画出正弦函数图像实例
2020/04/24 Python
python excel多行合并的方法
2020/12/09 Python
6号汽车旅馆预订:Motel 6
2018/02/11 全球购物
土木工程师职业规划范文
2014/03/07 职场文书
机械工程学院大学生求职信
2014/05/25 职场文书
超市工作总结范文2014
2014/12/19 职场文书
创业计划书之网络外卖
2019/10/31 职场文书