Python中还原JavaScript的escape函数编码后字符串的方法

 更新时间:2014年08月22日 09:30:11   投稿:junjie  
这篇文章主要介绍了Python中解析JavaScript的escape函数编码后字符串的方法,即Python中如何还原JavaScript escape函数编码后的字符串,需要的朋友可以参考下
(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>:9i0i.cn/qcloud

(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

遇到一个问题需要用Python把JavaScript中escape的中文给还原,但找了大半天,也没有找到答案,只好自己深入研究解决方案。
我们先来看在js中escape一段文字的编码

复制代码 代码如下:

a = escape('这是一串文字');
alert(a);

输出:
复制代码 代码如下:

%u8FD9%u662F%u4E00%u4E32%u6587%u5B57

咋一看,就感觉有点类似json格式,我们来看看标准的json格式编码同样的汉子“这是一串文字”
复制代码 代码如下:

# encoding=utf-8
import json
a = '这是一串文字'
print json.dumps(a)

输出:
复制代码 代码如下:
"\u8fd9\u662f\u4e00\u4e32\u6587\u5b57"

经过对比,其实就是js escape编码每个汉子都是“%u”符号加4位字符编码,而json编码每个汉子都是“\u”符号加4位字符编码,这样的话,我们可以利用字符串替换操作还原json格式,然后再使用json模块loads就好
复制代码 代码如下:

# encoding=utf-8
import json
 
# js escape 字符串编码
c = '%u8FD9%u662F%u4E00%u4E32%u6587%u5B57'
 
# 还原Json对象
jsonObj =  '"'+"".join([(i and "\\"+i) for i in c.split('%')])+'"'
 
print json.loads(jsonObj)

特别记得在把“%”替换为“\”符号以后还要再使用双引号把字符串包一下,才能算是一个json对象,然后才能json.loads出来
后来,好不容易在一个站点上看到了更简便的方法。代码如下:
复制代码 代码如下:

# encoding=utf-8
c = '%u8FD9%u662F%u4E00%u4E32%u6587%u5B57'
print "".join([(len(i)>0 and unichr(int(i,16)) or "") for i in c.split('%u')])

它的思路其实都差不多,把“%u”号替换掉,剩下每一个都是4位固定长度的字符编码,最后在unichr反编码回中文字符。

相关文章

  • 使用pygame实现垃圾分类小游戏功能(已获校级二等奖)

    使用pygame实现垃圾分类小游戏功能(已获校级二等奖)

    这篇文章主要介绍了使用pygame实现垃圾分类小游戏功能(已获校级二等奖),本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • Python中的CURL PycURL使用例子

    Python中的CURL PycURL使用例子

    这篇文章主要介绍了Python中的CURL PycURL使用例子,需要的朋友可以参考下
    2014-06-06
  • Python网络编程之HTTP客户端模块urllib与urllib3

    Python网络编程之HTTP客户端模块urllib与urllib3

    这篇文章介绍了Python网络编程之HTTP客户端模块urllib与urllib3,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05
  • 运用TensorFlow进行简单实现线性回归、梯度下降示例

    运用TensorFlow进行简单实现线性回归、梯度下降示例

    这篇文章主要介绍了运用TensorFlow进行简单实现线性回归、梯度下降示例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-03-03
  • Python+Selenium实现网站滑块拖动操作

    Python+Selenium实现网站滑块拖动操作

    这篇文章主要为大家详细介绍了如何利用Python+Selenium模拟实现登录某网站的滑块拖动操作,文中的示例代码讲解详细,需要的可以参考一下
    2022-09-09
  • python读写删除复制文件操作方法详细实例总结

    python读写删除复制文件操作方法详细实例总结

    这篇文章主要介绍了python读写删除复制文件操作方法详细实例总结,需要的朋友可以参考下
    2021-04-04
  • python list的index()和find()的实现

    python list的index()和find()的实现

    这篇文章主要介绍了python list的index()和find()的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • 深入理解python多线程编程

    深入理解python多线程编程

    进程是资源分配的最小单位,他是操作系统进行资源分配和调度运行的基本单位。通俗理解:一个正在运行的一个程序就是一个进程,本文重点给大家介绍python多线程编程的相关知识,感兴趣的朋友一起看看吧
    2021-04-04
  • Python实现壁纸下载与轮换

    Python实现壁纸下载与轮换

    本人对于壁纸一直偏佛系,不爱特意去找一堆壁纸。因此用Python简单地搞了一个自动下载壁纸,定时随机轮换的功能来自娱自乐,顺便分享给大家。
    2020-10-10
  • python操作CouchDB的方法

    python操作CouchDB的方法

    这篇文章主要介绍了python操作CouchDB的方法,包括了couchDb库安装、连接服务器、创建数据库、查询数据库、遍历数据库等常用的操作,非常具有实用价值,需要的朋友可以参考下
    2014-10-10

最新评论

?


http://www.vxiaotou.com