python2中urllib.unquote乱码的原因与解决方法
发现问题
Python中的urllib模块用来处理url相关的操作,unquote方法对应javascript中的urldecode方法,它对url进行解码,把类似"%xx"的字符替换成单个字符,例如:“%E6%B3%95%E5%9B%BD%E7%BA%A2%E9%85%92”解码后会转换成“法国红酒”,但是使用过程中,如果姿势不对,最终转换出来的字符会是乱码“法国红酔。
笔者在一个FLASK应用中就遇到了这样的问题,浏览器通过AJAX请求传递到后台后,由于其参数的值的特殊性,故做了urlencode处理,然而到后台进行处理,总是出现类似于:"法国红é…"的乱码:
request.values.get('content')默认返回的是值的类型是unicode,而unquote方法处理unicode类型的字符时,直接返回的就是:
u'\xe6\xb3\x95\xe5\x9b\xbd\xe7\xba\xa2\xe9\x85\x92'
注意:这里返回的值类型是unicode,也就是说unquote方法接收参数类型是unidoe,返回的值类型也是unicode,只不过是把"%"替换成了'\x',最终由:
u"%E6%B3%95%E5%9B%BD%E7%BA%A2%E9%85%92"
替换为了:
u"\xe6\xb3\x95\xe5\x9b\xbd\xe7\xba\xa2\xe9\x85\x92"
解决办法:
content = str(request.values.get('content'))
if sys.version_info > (3, 0):print('3')content = urllib.parse.unquote(content, encoding='utf-8', errors='replace') else:print('2')content = urllib.unquote(content)
python2中urllib.unquote乱码的原因与解决方法相关推荐
- android u盘盘符乱码,分享U盘中文件出现乱码的原因以及解决方法
当使用U盘时发现U盘文件成了乱码,就算将U盘拔插了几次也无法恢复,这是怎么回事呢?U盘文件出现乱码又应该如何解决呢?接下来就为大家分享U盘中文件出现乱码的原因以及解决方法. u盘出现乱码的原因: 1. ...
- 思科ccie和华为hcie中交换机环路的产生原因和解决方法
思科ccie和华为hcie中交换机环路的产生原因和解决方法,互联网时代对于我们的生活产生了非常巨大的影响,给我们带来了很多的便利,但是同时给我们带来的还有许许多多的问题,如网络安全. 有人说过在当今的 ...
- java中乱码产生的原因_java出现乱码的原因与解决方法详解
java在字符串中统一用Unicode表示.(推荐:java视频教程) 对于任意一个字符串:String string = "测试字符串"; 如果源文件是GBK编码,操作系统默认环 ...
- PHP连接MYSQL出现乱码的原因与解决方法
解决MySql数据库乱码的一个首要前提是保证 数据库+数据表+前端显示 编码一致,国内项目一般统一设定为GB2312或GBK,而国际化项目则一般使用utf8. 另外,字符集设定完毕之后记得重启目标机M ...
- 电脑出现乱码的原因以及解决方法
在日常使用电脑的过程中,经常会遇到电脑出现乱码,那么为什么会出现乱码呢?出现乱码又该怎么解决呢?下面我们一起来了解一下. 出现乱码的原因 系统乱码:主要是Windows中显示乱码,比如菜单.桌面.启动 ...
- php包含文件时显示空白页,php中出现空白页的原因及解决方法汇总_php技巧
很多程序员在进行php开发的时候都遇到过出现空白页的请,综合分析来说,在php编程中出现空白页面可能是由以下几个原因造成的: 1.逻辑错误 逻辑错误是最难排除的,从表面上看,也许代码是合法的,是正规的 ...
- 神经网络中的过拟合的原因及解决方法、泛化能力、L2正则化
过拟合:训练好的神经网络对训练数据以及验证数据拟合的很好,accuracy很高,loss很低,但是在测试数据上效果很差,即出现了过拟合现象. 过拟合产生的原因: (1)数据集有噪声 (2)训练数据不足 ...
- java中文乱码的原因及解决方法
在java开发中都能遇到java中文乱码的情况,怎样才能够恰当地选择汉字编码方式并正确地处理汉字的编码呢?希望通过下面的总结的java中文乱码解决方法对遇到过此类问题的朋友有所帮助. 首先,要想解决j ...
- 中文乱码的原因及解决方法
1.我们常用的编码表: ASCLL:美国标准信息交换码 --->用一个字节的7位可以表示 ISO8859-1:拉丁码表.欧洲码表 --->用一个字节的8位来表示 GB2312:中国的中文编 ...
- C++ 内存管理中内存泄漏问题产生原因以及解决方法
C++内存管理中内存泄露(memory leak)一般指的是程序在申请内存后,无法释放已经申请的内存空间,内存泄露的积累往往会导致内存溢出. 一.内存分配方式 通常内存分配方式有以下三种: (1)从静 ...
最新文章
- c语言求一个数组的众数,众数问题 (C语言代码)
- Ubuntu下安装DEB包时出现错误的解救方法
- Nmap在pentest box中的扫描及应用
- 删除Windows 系统快捷方式箭头 Delete Windows Shortcuct Arrows
- oracle 转换成csv文件,如何将csv转换为oracle中的表
- 为什么WordPress网站应尽量避免使用过多插件
- php读取三维数组,php 读取多维数组方法_PHP教程
- 探讨继承与实现(二)
- 著名模拟鼠标点击软件小点点被收购
- python有趣小程序-小码王分享python一些有趣的小程序
- dnf登录不了服务器未响应,win7dnf辅助登陆没反应的三种解决方法
- 深度残差网络+自适应参数化ReLU激活函数(调参记录2)
- swift-集成touch id功能 指纹验证
- 关于COM中变体类型VARIANT
- 快速排序的优化1: 选取中间值或随机值作为基准,C语言实现
- Jetson Nano——使用JetCam官方库调用双CSI摄像头
- 在Windows 7下删除注册表项时,权限不足
- HikariCP连接池8小时后只有一个连接或session问题
- mac 无法访问浏览器
- 构建用于签名/加密双证书测试体系的可执行命令