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 相关文章推荐
输入框的字数时时统计—关于 onpropertychange 和 oninput 使用
Oct 21 Javascript
博客侧边栏模块跟随滚动条滑动固定效果的实现方法(js+jquery等)
Mar 24 Javascript
jQuery学习笔记之2个小技巧
Jan 19 Javascript
js去字符串前后空格的实现方法
Feb 26 Javascript
深入理解jquery跨域请求方法
May 18 Javascript
JS如何判断json是否为空
Jul 06 Javascript
js实现select选择框效果及美化
Aug 19 Javascript
Angular2学习教程之TemplateRef和ViewContainerRef详解
May 25 Javascript
node.js中grunt和gulp的区别详解
Jul 17 Javascript
angular中两种表单的区别(响应式和模板驱动表单)
Dec 06 Javascript
浅谈JS中this在各个场景下的指向
Aug 14 Javascript
Vue3.0中Ref与Reactive的区别示例详析
Jul 07 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
mysql 查询指定日期时间内sql语句实现原理与代码
2012/12/16 PHP
PHP编程实现的TCP服务端和客户端功能示例
2018/04/13 PHP
Javascript实例教程(19) 使用HoTMetal(1)
2006/12/23 Javascript
Dom 是什么的详细说明
2010/10/25 Javascript
javascript利用初始化数据装配模版的实现代码
2010/11/17 Javascript
jQuery Ajax提交表单查询获得数据实例代码
2012/09/19 Javascript
js 获取页面高度和宽度兼容 ie firefox chrome等
2014/05/14 Javascript
绑定回车enter事件代码
2014/05/18 Javascript
jquery+ajax验证不通过也提交表单问题处理
2014/12/12 Javascript
深入浅析JavaScript字符串操作方法 slice、substr、substring及其IE兼容性
2015/12/16 Javascript
基于jQuery实现表格内容的筛选功能
2016/08/21 Javascript
js实现简单的碰壁反弹效果
2016/08/30 Javascript
JavaScript 是什么意思
2016/09/22 Javascript
KVM虚拟化技术之使用Qemu-kvm创建和管理虚拟机的方法
2016/10/05 Javascript
全面总结Javascript对数组对象的各种操作
2017/01/22 Javascript
canvas绘制环形进度条
2017/02/23 Javascript
javascript实现圣旨卷轴展开效果(代码分享)
2017/03/23 Javascript
Vue.directive 自定义指令的问题小结
2018/03/04 Javascript
vue router动态路由下让每个子路由都是独立组件的解决方案
2018/04/24 Javascript
JS加密插件CryptoJS实现AES加密操作示例
2018/08/16 Javascript
详解Angular模板引用变量及其作用域
2018/11/23 Javascript
详解vue-cli+es6引入es5写的js(两种方法)
2019/04/19 Javascript
详解elementUI中input框无法输入的问题
2020/04/27 Javascript
[01:30]DOTA2上海特锦赛现场采访 Loda倾情献唱
2016/03/25 DOTA
Python彩色化Linux的命令行终端界面的代码实例分享
2016/07/02 Python
Python multiprocessing多进程原理与应用示例
2019/02/28 Python
Python OpenCV实现视频分帧
2019/06/01 Python
Django框架模型简单介绍与使用分析
2019/07/18 Python
利用Python库Scapy解析pcap文件的方法
2019/07/23 Python
python主线程与子线程的结束顺序实例解析
2019/12/17 Python
Django实现将一个字典传到前端显示出来
2020/04/03 Python
pytorch简介
2020/11/11 Python
你正在寻找的CSS3 动画技术
2011/07/27 HTML / CSS
中国综合性网上购物商城:当当(网上卖书起家)
2016/11/16 全球购物
高级销售员求职信
2013/10/25 职场文书
60条职场经典语录,总有一条能触动你的心
2019/08/21 职场文书