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的AJAX实现文件下载的小例子
May 15 Javascript
写JQuery插件的基本知识
Nov 25 Javascript
一个简单的Node.js异步操作管理器分享
Apr 29 Javascript
Jquery 实现table样式的设定
Jan 28 Javascript
jQuery表单美化插件jqTransform使用详解
Apr 12 Javascript
jQuery实现表格行上移下移和置顶的方法
May 22 Javascript
简单实现js点击展开二级菜单功能
May 16 Javascript
AngularJS 实现点击按钮获取验证码功能实例代码
Jul 13 Javascript
Vue.js弹出模态框组件开发的示例代码
Jul 26 Javascript
iframe高度自适应及隐藏滚动条的实例详解
Sep 29 Javascript
vue计算属性computed的使用方法示例
Mar 13 Javascript
vue实现列表拖拽排序的示例代码
Apr 08 Vue.js
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
Windows下PHP的任意文件执行漏洞
2006/10/09 PHP
综合图片计数器
2006/10/09 PHP
PHP MySQL应用中使用XOR运算加密算法分享
2011/08/28 PHP
如何给phpcms v9增加类似于phpcms 2008中的关键词表
2013/07/01 PHP
yiic命令时提示“php.exe”不是内部或外部命令的解决方法
2014/12/18 PHP
laravel 实现登陆后返回登陆前的页面方法
2019/10/03 PHP
Laravel 手动开关 Eloquent 修改器的操作方法
2019/12/30 PHP
php实现图片压缩处理
2020/09/09 PHP
js showModalDialog参数的使用详解
2014/01/07 Javascript
jQuery中:submit选择器用法实例
2015/01/03 Javascript
Bootstrap自定义文件上传下载样式
2016/05/26 Javascript
工作中比较实用的JavaScript验证和数据处理的干货(经典)
2016/08/03 Javascript
js实现刷新页面后回到记录时滚动条的位置【两种方案可选】
2016/12/12 Javascript
Bootstrap模态框插入视频的实现代码
2017/06/25 Javascript
Vue.set() this.$set()引发的视图更新思考及注意事项
2018/08/30 Javascript
微信小程序MUI导航栏透明渐变功能示例(通过改变rgba的a值实现)
2019/01/24 Javascript
JavaScript/TypeScript 实现并发请求控制的示例代码
2021/01/18 Javascript
[01:02:17]2014 DOTA2华西杯精英邀请赛 5 24 DK VS VG
2014/05/26 DOTA
python异步任务队列示例
2014/04/01 Python
使用Python中PDB模块中的命令来调试Python代码的教程
2015/03/30 Python
归纳整理Python中的控制流语句的知识点
2015/04/14 Python
Python绘制3d螺旋曲线图实例代码
2017/12/20 Python
Pycharm 操作Django Model的简单运用方法
2018/05/23 Python
python打开windows应用程序的实例
2019/06/28 Python
python函数调用,循环,列表复制实例
2020/05/03 Python
Django多数据库联用实现方法解析
2020/11/12 Python
HTML5 Video标签的属性、方法和事件汇总介绍
2015/04/24 HTML / CSS
全球性的在线鞋类品牌:Public Desire
2019/04/03 全球购物
描述Cookie和Session的作用,区别和各自的应用范围,Session工作原理
2015/03/25 面试题
网站推广策划方案
2014/06/04 职场文书
2014四风问题对照检查材料范文
2014/09/15 职场文书
师范生小学见习总结
2015/06/23 职场文书
公司人事管理制度
2015/08/05 职场文书
优秀党员主要事迹范文
2015/11/05 职场文书
幼儿园教师教学反思
2016/03/02 职场文书
Python pandas求方差和标准差的方法实例
2021/08/04 Python