Python中还原JavaScript的escape函数编码后字符串的方法
遇到一个问题需要用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反编码回中文字符。
相关推荐
-
JavaScript中最简洁的编码html字符串的方法
html字符串是指'<div id="a">aklsdjfklsjdfl</div>'这样的带html特殊符号的字符串,我们通常要对他进行处理再输出以免输出成了真正的html元素,也就是把<变成<这样的html符号代码. 如果字符串很长,里面特殊符号很多,我们该怎么简单而高效的把他们全部转码呢?循环?正则表达式?都不用!且看: 复制代码 代码如下: function bian(a){return new Option(a).innerHTML} 这就
-
JS对URL字符串进行编码/解码分析
虽然escape().encodeURI().encodeURIComponent()三种方法都能对一些影响URL完整性的特殊 字符进行过滤.但后两者是将字符串转换为UTF-8的方式来传输,解决了页面编码不一至导致的乱码问 题.例如:发送页与接受页的编码格式(Charset)不一致(假设发送页面是GB2312而接收页面编码是 UTF-8),使用escape()转换传输中文字串就会出现乱码问题. 以下是JS下对URL进行编/解码的各种方法: escape 方法:返回一个可在所有计算机上读取的编码
-
JS对字符串编码的几种方式使用指南
函数 描述 encodeURI() 把字符串编码为 URI encodeURIComponent() 把字符串编码为 URI 组件 escape() 对字符串进行编码 上面是查询来自w3school的资料.那么三者之间有什么区别呢,请容我测试测试. 复制代码 代码如下: var str = "http://localhost:8080/Product/index?id=123&attr=456&area=中国"; console.log(encodeURI(str));
-
对字符串进行HTML编码和解码的JavaScript函数
编码函数: 复制代码 代码如下: function HtmlEncode(str) { var t = document.createElement("div"); t.textContent ? t.textContent = str : t.innerText = str; return t.innerHTML; } 解码函数: 复制代码 代码如下: function HtmlDecode(str) { var t = document.createElement("di
-
JS 文字符串转换unicode编码函数
复制代码 代码如下: function uniencode(text) { text = escape(text.toString()).replace(/\+/g, "%2B"); var matches = text.match(/(%([0-9A-F]{2}))/gi); if (matches) { for (var matchid = 0; matchid < matches.length; matchid++) { var code = matches[matchid
-
JavaScript将字符串转换成字符编码列表的方法
本文实例讲述了JavaScript将字符串转换成字符编码列表的方法.分享给大家供大家参考.具体如下: JavaScript将字符串转换成字符编码列表,例如foo转换成 [112,111,111] 方法 1: JavaScript 1.6 Array.map('foo', function(x) { return String.charCodeAt(x) }) // is [112,111,111] 方法2: JavaScript 1.7 [ String.charCodeAt(x) for ea
-
js对字符串进行编码的方法总结(推荐)
在用javascript对URL字符串进行编码中,虽然escape().encodeURI().encodeURIComponent()三种方法都能对一些影响URL完整性的特殊字符进行过滤. 但后两者是将字符串转换为UTF-8的方式来传输,解决了页面编码不一至导致的乱码问题. 例如:发送页与接受页的编码格式(Charset)不一致(假设发送页面是GB2312而接收页面编码是UTF-8),使用escape()转换传输中文字串就会出现乱码问题. 以下是JS下对URL进行编/解码的各种方法: 1.es
-
Python中还原JavaScript的escape函数编码后字符串的方法
遇到一个问题需要用Python把JavaScript中escape的中文给还原,但找了大半天,也没有找到答案,只好自己深入研究解决方案. 我们先来看在js中escape一段文字的编码 复制代码 代码如下: a = escape('这是一串文字'); alert(a); 输出: 复制代码 代码如下: %u8FD9%u662F%u4E00%u4E32%u6587%u5B57 咋一看,就感觉有点类似json格式,我们来看看标准的json格式编码同样的汉子"这是一串文字" 复制代码 代码如下:
-
在Python 中同一个类两个函数间变量的调用方法
如下所示: class A(): def test_a(self): self.m ="hello" def test_b(self): self.test_a() n=self.m + "world" print(n) if __name__ == '__main__': A().test_b() 运行结果: 以上这篇在Python 中同一个类两个函数间变量的调用方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.
-
在PHP中实现Javascript的escape()函数代码
这里,一般都需要预先将正常的字符串编码成 JavaScript unescape() 函数能够解译的格式,以 PHP 为例,可以使用以下函数实现 Javascript 中 escape() 函数相同的功能: 复制代码 代码如下: <?php function escapeToHex($string, $encoding = UTF-8) { $return = ; for ($x = 0; $x < mb_strlen($string, $encoding); $x ++) { $str =
-
解决Python中pandas读取*.csv文件出现编码问题
1.问题 在使用Python中pandas读取csv文件时,由于文件编码格式出现以下问题: Traceback (most recent call last): File "pandas\_libs\parsers.pyx", line 1134, in pandas._libs.parsers.TextReader._convert_tokens File "pandas\_libs\parsers.pyx", line 1240, in pandas._libs
-
Python中pow()和math.pow()函数用法示例
本文实例讲述了Python中pow()和math.pow()函数用法.分享给大家供大家参考,具体如下: 1. 内置函数pow() >>> help(pow) Help on built-in function pow in module __builtin__: pow(...) pow(x, y[, z]) -> number With two arguments, equivalent to x**y. With three arguments, equivalent to (
-
Python中常用的高阶函数实例详解
前言 高阶函数指的是能接收函数作为参数的函数或类:python中有一些内置的高阶函数,在某些场合使用可以提高代码的效率. lambda 当在使用一些函数的时候,我们不需要显式定义函数名称,直接传入lambda匿名函数即可.lambda匿名函数通常和其他函数搭配使用. 比如可以直接使用如下的lambda表达式计算当x=3时,y = x * 3 + 5的函数值. In [1]: (lambda x: x * 3 + 5)(3) Out[1]: 14 map map函数将一个函数和序列/迭代器(可以传
-
python中sort sorted reverse reversed函数的区别说明
sort()是可变对象(字典.列表)的方法,无参数,无返回值,sort()会改变可变对象,因此无需返回值. sort()方法是可变对象独有的方法或者属性,而作为不可变对象如元组.字符串是不具有这些方法的,如果调用将会返回一个异常. 代码如下: >>> a=[5,4,3,2,1] >>> a.sort() >>> [1, 2, 3, 4, 5] >>> a >>> [1, 2, 3, 4, 5] sorted()是py
-
详解python中的lambda与sorted函数
lambda表达式 python中形如: lambda parameters: expression 称为lambda表达式,用于创建匿名函数,该表达式会产生一个函数对象. 该对象的行为类似于用以下方式定义的函数: def <lambda>(parameters): return expression python中的lambda函数可以接受任意数量的参数,但只能有一个表达式.也就是说,lambda表达式适用于表示内部仅包含1行表达式的函数.那么lambda表达式的优势就很明显了: 使用lam
-
python中三种高阶函数(map,reduce,filter)详解
map(function,seq[,seq2]) 接收至少两个参数,基本作用为将传入的函数依次作用到序列的每个元素,并且把结果作为新的序列 返回一个可迭代的map对象 function:函数对象 py2中可为None,作用等同于zip() 如: py3中不可为None,None是不可调用.不可迭代对象 seq:可迭代对象,可以传一个或多个 # 传一个: def func(i):return i*2 print([i for i in map(func,[1,'2'])]) # [2,'22']
-
详解Python中常用的图片处理函数的使用
目录 cvtColor函数 split()和merge() threshold()函数 自定义threshold函数进行二值化 色度函数applyColorMap cvtColor函数 这个函数有两个参数 1,src 要进行变换的原图像 2,code 转换代码标识 例子: import cv2 image=cv2.imread("ddd.jpg") image1=cv2.cvtColor(image,cv2.COLOR_BGR2BGRA) cv2.imshow(""
随机推荐
- 关于SQL注入绕过的一些知识点
- cscript adsutil.vbs 设置iis参数提示拒绝访问的解决方法
- Oracle数据块实现原理深入解读
- 解析android截屏问题
- php 遍历数据表数据并列表横向排列的代码
- 深入多线程之:内存栅栏与volatile关键字的使用分析
- php中filter_input函数用法分析
- php文件上传表单摘自drupal的代码
- Node学习记录之cluster模块
- JavaScript中 this 指向问题深度解析
- PHP指定截取字符串中的中英文或数字字符的实例分享
- JQuery学习笔记 实现图片翻转效果和TAB标签切换效果第1/2页
- jquery动态更换设置背景图的方法
- JS不完全国际化&本地化手册 之 理论篇
- NodeJS仿WebApi路由示例
- 支持IE和FF的div+css选项卡
- windows 2008 R2 64位服务器中开启php curl扩展的方法
- Adapter模式实战之重构鸿洋集团的Android圆形菜单建行
- ASP.NET中将声音文件添加到资源中并进行播放的方法
- 简要对比C语言中的dup()函数和dup2()函数