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判断用户浏览器是否是XP SP2的IE6
Mar 08 Javascript
Jquery中val()表单取值赋值的实例代码
Aug 15 Javascript
JS实现图片平面旋转的方法
Mar 01 Javascript
基于jquery实现智能提示控件intellSeach.js
Mar 17 Javascript
原生javascript实现分享到朋友圈功能 支持ios和android
May 11 Javascript
浅谈在js传递参数中含加号(+)的处理方式
Oct 11 Javascript
js/jq仿window文件夹框选操作插件
Mar 08 Javascript
javascript、php关键字搜索函数的使用方法
May 29 Javascript
Vue项目全局配置页面缓存之按需读取缓存的实现详解
Aug 01 Javascript
基于Vue-cli快速搭建项目的完整步骤
Nov 03 Javascript
js设计模式之单例模式原理与用法详解
Aug 15 Javascript
Vue项目前后端联调(使用proxyTable实现跨域方式)
Jul 18 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
windows下升级PHP到5.3.3的过程及注意事项
2010/10/12 PHP
用php的ob_start来生成静态页面的方法分析
2011/03/09 PHP
PHP 将逗号、空格、回车分隔的字符串转换为数组的函数
2012/06/07 PHP
PHP数组循环操作详细介绍 附实例代码
2013/02/03 PHP
php截取字符串函数substr,iconv_substr,mb_substr示例以及优劣分析
2014/06/10 PHP
推荐5款跨平台的PHP编辑器
2014/12/25 PHP
PHP简单的MVC框架实现方法
2015/12/01 PHP
jquery中获得$.ajax()事件返回的值并添加事件的方法
2010/04/15 Javascript
从零开始学习jQuery (十) jQueryUI常用功能实战
2011/02/23 Javascript
node.js使用nodemailer发送邮件实例
2014/03/10 Javascript
详解参数传递四种形式
2015/07/21 Javascript
浅析JavaScript函数的调用模式
2016/08/10 Javascript
在javascript中使用com组件的简单实现方法
2016/08/17 Javascript
Bootstrap复选框和单选按钮美化插件(推荐)
2016/11/23 Javascript
jQuery实现简单的滑动导航代码(移动端)
2017/05/22 jQuery
基于cropper.js封装vue实现在线图片裁剪组件功能
2018/03/01 Javascript
koa2使用ejs和nunjucks作为模板引擎的使用
2018/11/27 Javascript
[01:11:21]DOTA2-DPC中国联赛 正赛 Phoenix vs CDEC BO3 第三场 3月7日
2021/03/11 DOTA
用Python代码来绘制彭罗斯点阵的教程
2015/04/03 Python
Python简单生成8位随机密码的方法
2017/05/24 Python
Python使用asyncio包处理并发详解
2017/09/09 Python
python字符串的方法与操作大全
2018/01/30 Python
IntelliJ IDEA安装运行python插件方法
2018/12/10 Python
对python pandas读取剪贴板内容的方法详解
2019/01/24 Python
Python修改文件往指定行插入内容的实例
2019/01/30 Python
关于初始种子自动选取的区域生长实例(python+opencv)
2020/01/16 Python
Python常用编译器原理及特点解析
2020/03/23 Python
德国2018年度最佳在线药房:Bodfeld Apotheke
2019/11/04 全球购物
全球才华横溢工匠的家居装饰、珠宝和礼物:NOVICA
2021/01/22 全球购物
什么造成了Java里面的异常
2016/04/24 面试题
员工自我鉴定范文
2013/10/06 职场文书
《木笛》教学反思
2014/03/01 职场文书
捐赠仪式主持词
2014/03/19 职场文书
新文化运动的口号
2014/06/21 职场文书
课外活动总结范文
2014/07/09 职场文书
对照四风自我剖析材料
2014/10/07 职场文书