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变量作用域使用中常见错误总结
Mar 26 Javascript
JavaScript的漂亮的代码片段
Jun 05 Javascript
用JavaScript实现用一个DIV来包装文本元素节点
Sep 09 Javascript
js实现基于正则表达式的轻量提示插件
Aug 29 Javascript
HTML5 Shiv完美解决IE(IE6/IE7/IE8)不兼容HTML5标签的方法
Nov 25 Javascript
jQuery为动态生成的select元素添加事件的方法
Aug 29 Javascript
浅谈regExp的test方法取得的值变化的原因及处理方法
Mar 01 Javascript
jquery实现自定义图片裁剪功能【推荐】
Mar 08 Javascript
vue+Java后端进行调试时解决跨域问题的方式
Oct 19 Javascript
vux-scroller实现移动端上拉加载功能过程解析
Oct 08 Javascript
在Vue中创建可重用的 Transition的方法
Jun 02 Javascript
手写实现JS中的new
Nov 07 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/10/09 PHP
如何限制访问者的ip(PHPBB的代码)
2006/10/09 PHP
php中的观察者模式
2010/03/24 PHP
深入理解PHP原理之错误抑制与内嵌HTML分析
2011/05/02 PHP
PHP 中检查或过滤IP地址的实现代码
2011/11/27 PHP
php缓冲 output_buffering的使用详解
2013/06/13 PHP
全面解读PHP的人气开发框架Laravel
2015/10/15 PHP
PHP制作登录异常ip检测功能的实例代码
2016/11/16 PHP
PHP获取远程http或ftp文件的md5值的方法
2019/04/15 PHP
用于判断用户注册时,密码强度的JS代码
2009/01/01 Javascript
javascript 页面划词搜索JS
2009/09/28 Javascript
IE 下Enter提交表单存在重复提交问题的解决方法
2014/05/04 Javascript
jQuery制作仿Mac Lion OS滚动条效果
2015/02/10 Javascript
JavaScript创建闭包的两种方式的优劣与区别分析
2015/06/22 Javascript
BootStrap Table 设置height表头与内容无法对齐的问题
2016/12/28 Javascript
Bootstrap 表单验证formValidation 实现远程验证功能
2017/05/17 Javascript
vue+webpack模拟后台数据的示例代码
2018/07/26 Javascript
JavaScript 空间坐标的使用
2020/08/19 Javascript
python 基础学习第二弹 类属性和实例属性
2012/08/27 Python
老生常谈Python序列化和反序列化
2017/06/28 Python
windows环境下tensorflow安装过程详解
2018/03/30 Python
Python Opencv实现图像轮廓识别功能
2020/03/23 Python
python GUI库图形界面开发之pyinstaller打包python程序为exe安装文件
2020/02/26 Python
Django框架配置mysql数据库实现过程
2020/04/22 Python
HTML5中FileReader接口使用方法实例详解
2017/08/26 HTML / CSS
用HTML5 实现橡皮擦的涂抹效果的教程
2015/05/11 HTML / CSS
跑步、骑行和铁人三项的高性能眼镜和服装:ROKA
2018/07/06 全球购物
荷兰家电销售网站:Welhof
2020/12/08 全球购物
linux下进程间通信的方式
2014/12/23 面试题
计算机专业推荐信范文
2013/11/27 职场文书
四年大学生活的个人自我评价
2013/12/11 职场文书
党支部书记四风问题整改措施
2014/09/24 职场文书
2015年超市工作总结范文
2015/05/26 职场文书
巴黎圣母院观后感
2015/06/10 职场文书
人民调解协议书
2016/03/21 职场文书
微软PC Health Check电脑健康状况检查应用下载(Win11配置检测工具)
2021/06/26 数码科技