escape编码与unescape解码汉字出现乱码的解决方法


Posted in Javascript onJuly 02, 2014

今天的项目中遇到需要用javascript的escape编码汉字再用unescape解码的情况,测试代码段的时候出现了乱码的情况。
具体情况如下:
首先,用EditPlus打开测试页面test.html,编辑如下html代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>unescape测试</title>
</head>
<body>
<script>
var teststr=escape("三水点靠木");
document.write(teststr);
</script>
</body>
</html>

页面打印输出:

%uFFFD%u0171%uFFFD%u05AE%uFFFD%uFFFD

此时可以看出情况不对,单从汉字对应的字符数量上来说已经不对了!
再使用如下代码测试unescape解码后的汉字:

var relstr=unescape("%uFFFD%u0171%uFFFD%u05AE%uFFFD%uFFFD");
document.write(relstr);

出现了乱码:�ű�֮��

解决方法:
用Dreamweaver打开test.html文件,发现了问题所在!
原先的那段

var teststr=escape("三水点靠木");

变成了

var teststr=escape("ű֮");

可见是编辑器的初始编码造成的!
在Dreamweaver中将汉字改回来,重新运行test.html,得到了对应的编码:

%u811A%u672C%u4E4B%u5BB6

此时再用unescape解码:

var relstr=unescape("%u811A%u672C%u4E4B%u5BB6");
document.write(relstr);

就得到了原先正确的汉字:三水点靠木!

Javascript 相关文章推荐
jquery选择器(常用选择器说明)
Sep 28 Javascript
jquery自动切换tabs选项卡的具体实现
Dec 24 Javascript
用IE重起计算机或者关机的示例代码
Mar 10 Javascript
javascript中类的定义方式详解(四种方式)
Dec 22 Javascript
jquery通过name属性取值的简单实现方法
Jun 20 Javascript
javascript鼠标滑过显示二级菜单特效
Nov 18 Javascript
基于jQuery实现表格的查看修改删除
Aug 01 Javascript
简单谈谈原生js的math对象
Jun 27 Javascript
微信小程序之发送短信倒计时功能
Aug 30 Javascript
vue项目在webpack2实现移动端字体自适配功能
Jun 02 Javascript
Openlayers实现距离面积测量
Sep 28 Javascript
jquery自定义组件实例详解
Dec 31 jQuery
js获取IP地址的方法小结
Jul 01 #Javascript
jQuery截取指定长度字符串的实现原理及代码
Jul 01 #Javascript
原生js事件的添加和删除的封装
Jul 01 #Javascript
jQuery的:parent选择器定义和用法
Jul 01 #Javascript
jQuery 写的简单打字游戏可以提示正确和错误的次数
Jul 01 #Javascript
JavaScript利用正则表达式去除日期中的“-”
Jul 01 #Javascript
jquery实现图片按比例缩放示例
Jul 01 #Javascript
You might like
mysql时区问题
2008/03/26 PHP
数据库查询记录php 多行多列显示
2009/08/15 PHP
php中使用ExcelFileParser处理excel获得数据(可作批量导入到数据库使用)
2010/08/21 PHP
php中的动态调用实例分析
2015/01/07 PHP
php实现修改新闻时删除图片的方法
2015/05/12 PHP
PHP Header用于页面跳转时的几个注意事项
2016/10/21 PHP
php curl获取到json对象并转成数组array的方法
2018/05/31 PHP
Prototype Function对象 学习
2009/07/12 Javascript
js传参数受特殊字符影响错误的解决方法
2013/10/21 Javascript
Javascript使用post方法提交数据实例
2015/08/03 Javascript
HTML5之WebSocket入门3 -通信模型socket.io
2015/08/21 Javascript
分享网页检测摇一摇实例代码
2016/01/14 Javascript
Ext JS框架程序中阻止键盘触发回退或者刷新页面的代码分享
2016/06/07 Javascript
Bootstrap CSS组件之按钮下拉菜单
2016/12/17 Javascript
基于jQuery代码实现圆形菜单展开收缩效果
2017/02/13 Javascript
nodejs Assert中equal(),strictEqual(),deepEqual(),strictDeepEqual()比较
2017/09/18 NodeJs
Node调用Java的示例代码
2017/09/20 Javascript
node将geojson转shp返回给前端的实现方法
2019/05/29 Javascript
ES6 Generator函数的应用实例分析
2019/06/26 Javascript
JS字符串和数组如何实现相互转化
2020/07/02 Javascript
js编写简易的计算器
2020/07/29 Javascript
[17:36]VG战队纪录片
2014/08/21 DOTA
解决Python出现_warn_unsafe_extraction问题的方法
2016/03/24 Python
centos6.4下python3.6.1安装教程
2017/07/21 Python
matplotlib绘制动画代码示例
2018/01/02 Python
Python 点击指定位置验证码破解的实现代码
2019/09/11 Python
如何使用Cython对python代码进行加密
2020/07/08 Python
Windows下Sqlmap环境安装教程详解
2020/08/04 Python
pycharm 多行批量缩进和反向缩进快捷键介绍
2021/01/15 Python
湖南卫视在线视频媒体平台:芒果TV
2019/10/30 全球购物
大一新生军训时的自我评价分享
2013/12/05 职场文书
文明村创建实施方案
2014/03/27 职场文书
4s店市场专员岗位职责
2014/04/09 职场文书
Vue图片裁剪组件实例代码
2021/07/02 Vue.js
mysql配置SSL证书登录的实现
2021/09/04 MySQL
关于Nginx中虚拟主机的一些冷门知识小结
2022/03/03 Servers