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实例教程(19) 使用HoTMetal(7)
Dec 23 Javascript
jsTree树控件(基于jQuery, 超强悍)[推荐]
Sep 01 Javascript
了解jQuery技巧来提高你的代码
Jan 08 Javascript
jQuery的控件及事件(输入控件及回车事件)使用示例
Jul 25 Javascript
微信小程序 页面跳转如何实现传值
Apr 05 Javascript
shiro授权的实现原理
Sep 21 Javascript
JavaScript 跨域之POST实现方法
May 07 Javascript
浅谈VUE防抖与节流的最佳解决方案(函数式组件)
May 22 Javascript
详细教你微信公众号正文页SVG交互开发技巧
Jul 25 Javascript
在node环境下parse Smarty模板的使用示例代码
Nov 15 Javascript
vue中实现点击按钮滚动到页面对应位置的方法(使用c3平滑属性实现)
Dec 29 Javascript
vue移动端的左右滑动事件详解
Jun 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
phpmyadmin安装时提示:Warning: require_once(./libraries/common.inc.php)错误解决办法
2011/08/18 PHP
PHP中其实也可以用方法链
2011/11/10 PHP
PHP+Mysql+jQuery实现发布微博程序 php篇
2015/10/15 PHP
PHP实现简单用户登录界面
2019/10/23 PHP
JS实现self的resend
2010/07/22 Javascript
客户端 使用XML DOM加载json数据的方法
2010/09/28 Javascript
jquery 读取页面load get post ajax 四种方式代码写法
2011/04/02 Javascript
JS中 用户登录系统的解决办法
2013/04/15 Javascript
jquery如何实现在加载完iframe的内容后再进行操作
2013/09/10 Javascript
jQuery循环滚动新闻列表示例代码
2014/06/17 Javascript
js动态添加onclick事件可传参数与不传参数
2014/07/29 Javascript
js实现飞入星星特效代码
2014/10/17 Javascript
JavaScript中的原型继承基础学习教程
2016/05/06 Javascript
学做Bootstrap的第一个页面
2016/05/15 HTML / CSS
jquery插件格式实例分析
2016/06/16 Javascript
AngularJS基础 ng-keypress 指令简单示例
2016/08/02 Javascript
BootStrap Fileinput初始化时的一些参数
2016/12/30 Javascript
JavaScript数据类型和变量_动力节点Java学院整理
2017/06/26 Javascript
微信小程序实现单列下拉菜单效果
2019/04/25 Javascript
详解Vue.js中引入图片路径的几种方式
2019/06/17 Javascript
[56:46]2018DOTA2亚洲邀请赛 3.31 小组赛 B组 VP vs Effect
2018/04/01 DOTA
python中as用法实例分析
2015/04/30 Python
python编程通过蒙特卡洛法计算定积分详解
2017/12/13 Python
对Pyhon实现静态变量全局变量的方法详解
2019/01/11 Python
Python实战之制作天气查询软件
2019/05/14 Python
python全栈知识点总结
2019/07/01 Python
Python从列表推导到zip()函数的5种技巧总结
2019/10/23 Python
Python算法的时间复杂度和空间复杂度(实例解析)
2019/11/19 Python
python实现图片素描效果
2020/09/26 Python
Charles&Keith美国官方网站:新加坡快时尚鞋类和配饰零售商
2019/11/27 全球购物
params有什么用
2016/03/01 面试题
会计的岗位职责
2014/03/15 职场文书
医学生求职自荐书
2014/06/12 职场文书
党员违纪检讨书
2015/05/05 职场文书
导游词之晋城蟒河
2019/12/12 职场文书
5人制售《绝地求生》游戏外挂获利500多万元 被判刑
2022/03/31 其他游戏