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 相关文章推荐
javaScript(JS)替换节点实现思路介绍
Apr 17 Javascript
js字符串截取函数substr substring slice使用对比
Nov 27 Javascript
跟我学习javascript的this关键字
May 28 Javascript
Angular和百度地图的结合实例代码
Oct 19 Javascript
基于javascript实现按圆形排列DIV元素(一)
Dec 02 Javascript
jQuery+CSS3实现点赞功能
Mar 13 Javascript
JavaScript实现设置默认日期范围为最近40天的方法分析
Jul 12 Javascript
微信小程序之分享页面如何返回首页的示例
Mar 28 Javascript
checkbox在vue中的用法小结
Nov 13 Javascript
VUE基于NUXT的SSR 服务端渲染
Nov 30 Javascript
基于webpack4+vue-cli3项目实现换肤功能
Jul 17 Javascript
逐行分析鸿蒙系统的 JavaScript 框架(推荐)
Sep 17 Javascript
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
上传多个文件的PHP脚本
2006/11/26 PHP
PHP连接MySQL查询结果中文显示乱码解决方法
2013/10/25 PHP
codeigniter使用技巧批量插入数据实例方法分享
2013/12/31 PHP
ThinkPHP采用GET方式获取中文参数查询无结果的解决方法
2014/06/26 PHP
php模拟服务器实现autoindex效果的方法
2015/03/10 PHP
程序员的表白神器“520”大声喊出来
2016/05/20 PHP
Javascript----文件操作
2007/01/18 Javascript
基于JQuery的浮动DIV显示提示信息并自动隐藏
2011/02/11 Javascript
FusionCharts图表显示双Y轴双(多)曲线
2012/11/22 Javascript
jQuery中closest和parents的区别分析
2015/05/07 Javascript
Javascript闭包实例详解
2015/11/29 Javascript
省市二级联动小案例讲解
2016/07/24 Javascript
深入理解js generator数据类型
2016/08/16 Javascript
微信小程序 页面传值详解
2017/03/10 Javascript
jQuery插件ImgAreaSelect实现头像上传预览和裁剪功能实例讲解一
2017/05/26 jQuery
详解nodeJS之路径PATH模块
2017/05/31 NodeJs
深入理解ES6之数据解构的用法
2018/01/13 Javascript
原生JS forEach()和map()遍历的区别、兼容写法及jQuery $.each、$.map遍历操作
2019/02/27 jQuery
JS使用iView的Dropdown实现一个右键菜单
2019/05/06 Javascript
[01:02:17]2014 DOTA2华西杯精英邀请赛 5 24 DK VS VG
2014/05/26 DOTA
[47:38]Optic vs VGJ.S 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
[00:43]拉比克至宝魔导师密钥展示
2018/12/20 DOTA
Python 文件和输入输出小结
2013/10/09 Python
使用Python判断质数(素数)的简单方法讲解
2016/05/05 Python
一篇文章彻底搞懂Python中可迭代(Iterable)、迭代器(Iterator)与生成器(Generator)的概念
2019/05/13 Python
浅谈在django中使用redirect重定向数据传输的问题
2020/03/13 Python
Python如何优雅删除字符列表空字符及None元素
2020/06/25 Python
20行代码教你用python给证件照换底色的方法示例
2021/02/05 Python
HTML5拖放效果的实现代码
2016/11/17 HTML / CSS
澳大利亚在线购买儿童玩具:Toy Universe
2017/12/28 全球购物
法国春天百货官网:Printemps.com
2020/06/29 全球购物
网吧收银员岗位职责
2013/12/14 职场文书
机关领导查摆四风思想汇报
2014/09/13 职场文书
利用ajax+php实现商品价格计算
2021/03/31 PHP
Nginx如何配置Http、Https、WS、WSS的方法步骤
2021/05/11 Servers
redis实现排行榜功能
2021/05/24 Redis