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实现的动态文字变换
Jul 28 Javascript
javascript 显示当前系统时间代码
Dec 28 Javascript
jquery判断字符输入个数(数字英文长度记为1,中文记为2,超过长度自动截取)
Oct 15 Javascript
JS将秒换成时分秒实现代码
Sep 03 Javascript
js获取当前路径的简单示例代码
Jan 08 Javascript
web前端开发upload上传头像js示例代码
Oct 22 Javascript
iOS + node.js使用Socket.IO框架进行实时通信示例
Apr 14 Javascript
AngularJS中下拉框的高级用法示例
Oct 11 Javascript
使用JS获取页面上的所有标签
Oct 18 Javascript
jQuery实现表格的增、删、改操作示例
Jan 27 jQuery
详细介绍解决vue和jsp结合的方法
Feb 06 Javascript
vue-quill-editor的使用及个性化定制操作
Aug 04 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 getsiteurl()函数
2009/09/05 PHP
php实现递归的三种基本方式
2020/07/04 PHP
PHP使用preg_split和explode分割textarea存放内容的方法分析
2017/07/03 PHP
图片img的src不变让浏览器重新加载实现方法
2013/03/29 Javascript
Juery解决tablesorter中文排序和字符范围的方法
2015/05/06 Javascript
简介JavaScript中的getUTCFullYear()方法的使用
2015/06/10 Javascript
javascript图片滑动效果实现
2021/01/28 Javascript
多种JQuery循环滚动文字图片效果代码
2020/06/23 Javascript
Java遍历集合方法分析(实现原理、算法性能、适用场合)
2016/04/25 Javascript
AngularJS入门教程中SQL实例详解
2016/07/27 Javascript
BootStrap的table表头固定tbody滚动的实例代码
2016/08/24 Javascript
jQuery下拉菜单的实现代码
2016/11/03 Javascript
动态加载权限管理模块中的Vue组件
2018/01/16 Javascript
微信小程序实现写入读取缓存详解
2019/08/30 Javascript
VueCli生产环境打包部署跨域失败的解决
2020/11/13 Javascript
[50:50]完美世界DOTA2联赛PWL S3 INK ICE vs DLG 第一场 12.20
2020/12/23 DOTA
python使用datetime模块计算各种时间间隔的方法
2015/03/24 Python
Python日期时间对象转换为字符串的实例
2018/06/22 Python
python opencv实现图片旋转矩形分割
2018/07/26 Python
python根据文章标题内容自动生成摘要的实例
2019/02/21 Python
Python 编程速成(推荐)
2019/04/15 Python
Python网络爬虫之爬取微博热搜
2019/04/18 Python
解决django后台样式丢失,css资源加载失败的问题
2019/06/11 Python
Pycharm远程调试原理及具体配置详解
2019/08/08 Python
Django中create和save方法的不同
2019/08/13 Python
Python3 main函数使用sys.argv传入多个参数的实现
2019/12/25 Python
Python基于read(size)方法读取超大文件
2020/03/12 Python
python 图像判断,清晰度(明暗),彩色与黑白实例
2020/06/04 Python
python 基于opencv 绘制图像轮廓
2020/12/11 Python
用python批量下载apk
2020/12/29 Python
意大利咖啡、浓缩咖啡和浓缩咖啡机:illy caffe
2019/03/20 全球购物
深圳茁壮笔试题
2015/05/28 面试题
单位提档介绍信
2014/01/17 职场文书
排查整治工作方案
2014/06/09 职场文书
css 中多种边框的实现小窍门
2021/04/07 HTML / CSS
javascript函数式编程基础
2021/09/15 Javascript