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 相关文章推荐
js动态删除div元素基本思路及实现代码
May 08 Javascript
JavaScript中如何通过arguments对象实现对象的重载
May 12 Javascript
使用jquery.qrcode生成彩色二维码实例
Aug 08 Javascript
JavaScript fontsize方法入门实例(按照指定的尺寸来显示字符串)
Oct 17 Javascript
深入分析原生JavaScript事件
Dec 29 Javascript
jquery带动画效果幻灯片特效代码
Aug 27 Javascript
一个超简单的jQuery回调函数例子(分享)
Aug 08 Javascript
bootstrap weebox 支持ajax的模态弹出框
Feb 23 Javascript
深入理解JavaScript 箭头函数
May 30 Javascript
VUE实现密码验证与提示功能
Oct 18 Javascript
Vue+Element-UI实现上传图片并压缩
Nov 26 Javascript
js实现拾色器插件(ColorPicker)
May 21 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 mysql索引问题
2008/06/07 PHP
php正则过滤html标签、空格、换行符的代码(附说明)
2010/10/25 PHP
php下载excel无法打开的解决方法
2013/12/24 PHP
thinkphp中空模板与空模块的用法实例
2014/11/26 PHP
ThinkPHP3.2框架使用addAll()批量插入数据的方法
2017/03/16 PHP
PHP实现求两个字符串最长公共子串的方法示例
2017/11/17 PHP
JavaScript将Table导出到Excel实现思路及代码
2013/03/13 Javascript
jQuery子属性过滤选择器用法分析
2015/02/10 Javascript
js实现动态加载脚本的方法实例汇总
2015/11/02 Javascript
利用Node.JS实现邮件发送功能
2016/10/21 Javascript
浅谈JsonObject中的key-value数据解析排序问题
2017/12/06 Javascript
javascript实现数字配对游戏的实例讲解
2017/12/14 Javascript
利用JavaScript将Excel转换为JSON示例代码
2019/06/14 Javascript
jQuery鼠标滑过横向时间轴样式(代码详解)
2019/11/01 jQuery
ES6使用新特性Proxy实现的数据绑定功能实例
2020/05/11 Javascript
python正则表达式re模块详解
2014/06/25 Python
Python中使用urllib2防止302跳转的代码例子
2014/07/07 Python
Python实现图片转字符画的示例代码
2017/08/21 Python
详解pandas如何去掉、过滤数据集中的某些值或者某些行?
2019/05/15 Python
Python调用百度根据经纬度查询地址的示例代码
2019/07/07 Python
django认证系统 Authentication使用详解
2019/07/22 Python
python实现ssh及sftp功能(实例代码)
2020/03/16 Python
详解Django配置JWT认证方式
2020/05/09 Python
css3 矩阵的使用详解
2018/03/20 HTML / CSS
CSS3实现红包抖动效果
2020/12/23 HTML / CSS
Myprotein瑞典官方网站:畅销欧洲英国运动营养品牌
2018/01/22 全球购物
英语硕士生求职简历的自我评价
2013/10/15 职场文书
审核会计岗位职责
2013/11/08 职场文书
正规的求职信范文分享
2013/12/11 职场文书
网络事业创业计划书范文
2014/01/09 职场文书
生产助理岗位职责
2014/06/18 职场文书
物流专业求职信
2014/06/30 职场文书
教师辞职信范文
2015/02/28 职场文书
同学聚会祝酒词
2015/08/10 职场文书
入党转正申请书范文
2019/05/20 职场文书
tensorboard 可视化之localhost:6006不显示的解决方案
2021/05/22 Python