当前位置:  编程技术>python

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

    来源: 互联网  发布时间:2014-10-10

    本文导语:  遇到一个问题需要用Python把JavaScript中escape的中文给还原,但找了大半天,也没有找到答案,只好自己深入研究解决方案。 我们先来看在js中escape一段文字的编码 代码如下: a = escape('这是一串文字'); alert(a); 输出: 代码如...

遇到一个问题需要用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)

输出:
代码如下:
"u8fd9u662fu4e00u4e32u6587u5b57"

经过对比,其实就是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反编码回中文字符。

    
 
 

您可能感兴趣的文章:

  • Python不使用print而直接输出二进制字符串
  • C++中的Python字符串处理 pyString
  • Python中实现json字符串和dict类型的互转
  • python 字符串split的用法分享
  • Python将日期时间按照格式转换成字符串
  • Python 字符串中的字符倒转
  • python字符串格式化输出及相关操作代码举例
  • Python 连接字符串(join %)
  • Python中类似printf的字符串格式化详解
  • python字符串排序方法
  • python list 合并连接字符串的方法
  • python去掉字符串中重复字符的方法
  • Python 字符串定义
  • python 将字符串转换成字典dict
  • python中将字典转换成其json字符串
  • python字符串替换示例
  • Python 执行字符串表达式函数(eval exec execfile)
  • python字符串连接方式汇总
  • Python去掉字符串中空格的方法
  • Python中实现字符串类型与字典类型相互转换的方法
  • python实现从字符串中找出字符1的位置以及个数的方法
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Python 转 JavaScript PythonJS
  • Python替换JavaScript Brython
  • pyv8学习python和javascript变量进行交互
  • python使用PyV8执行javascript代码示例分享
  • Python GUI编程:tkinter实现一个窗口并居中代码
  • 让python同时兼容python2和python3的8个技巧分享
  • python异常信息堆栈输出到日志文件
  • 使用setup.py安装python包和卸载python包的方法
  • python下用os.execl执行centos下的系统时间同步命令ntpdate
  • 不小心把linux自带的python卸载了,导致安装一个依赖原python的软件不能安装,请问该怎么办?
  • Python namedtuple对象json序列化/反序列化及对象恢复
  • python读取csv文件示例(python操作csv)
  • Python获取网页编码的方法及示例代码
  • python基础教程之python消息摘要算法使用示例
  • Python异常模块traceback用法举例
  • 新手该如何学python怎么学好python?
  • python之平台独立的调试工具winpdb介绍
  • 使用python删除nginx缓存文件示例(python文件操作)
  • 基于Python的Html/xml解析库Beautiful Soup 4.2.1发布
  • python学习手册中的python多态示例代码
  • 测试Python内部类型及type和isinstance用法区别
  • 请教:system("C:\python2.4\python.exe C:\aa.py");该语句有何错误?为什么运行界面一闪就消失了并且没有运行完,请给出正确语句!
  • Python3中内置类型bytes和str用法及byte和string之间各种编码转换
  • python版本的问题
  • Python namedtuple(命名元组)使用实例
  • Mac OS X10.9安装的Python2.7升级Python3.3步骤详解


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3