发现问题

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乱码的原因与解决方法相关推荐

  1. android u盘盘符乱码,分享U盘中文件出现乱码的原因以及解决方法

    当使用U盘时发现U盘文件成了乱码,就算将U盘拔插了几次也无法恢复,这是怎么回事呢?U盘文件出现乱码又应该如何解决呢?接下来就为大家分享U盘中文件出现乱码的原因以及解决方法. u盘出现乱码的原因: 1. ...

  2. 思科ccie和华为hcie中交换机环路的产生原因和解决方法

    思科ccie和华为hcie中交换机环路的产生原因和解决方法,互联网时代对于我们的生活产生了非常巨大的影响,给我们带来了很多的便利,但是同时给我们带来的还有许许多多的问题,如网络安全. 有人说过在当今的 ...

  3. java中乱码产生的原因_java出现乱码的原因与解决方法详解

    java在字符串中统一用Unicode表示.(推荐:java视频教程) 对于任意一个字符串:String string = "测试字符串"; 如果源文件是GBK编码,操作系统默认环 ...

  4. PHP连接MYSQL出现乱码的原因与解决方法

    解决MySql数据库乱码的一个首要前提是保证 数据库+数据表+前端显示 编码一致,国内项目一般统一设定为GB2312或GBK,而国际化项目则一般使用utf8. 另外,字符集设定完毕之后记得重启目标机M ...

  5. 电脑出现乱码的原因以及解决方法

    在日常使用电脑的过程中,经常会遇到电脑出现乱码,那么为什么会出现乱码呢?出现乱码又该怎么解决呢?下面我们一起来了解一下. 出现乱码的原因 系统乱码:主要是Windows中显示乱码,比如菜单.桌面.启动 ...

  6. php包含文件时显示空白页,php中出现空白页的原因及解决方法汇总_php技巧

    很多程序员在进行php开发的时候都遇到过出现空白页的请,综合分析来说,在php编程中出现空白页面可能是由以下几个原因造成的: 1.逻辑错误 逻辑错误是最难排除的,从表面上看,也许代码是合法的,是正规的 ...

  7. 神经网络中的过拟合的原因及解决方法、泛化能力、L2正则化

    过拟合:训练好的神经网络对训练数据以及验证数据拟合的很好,accuracy很高,loss很低,但是在测试数据上效果很差,即出现了过拟合现象. 过拟合产生的原因: (1)数据集有噪声 (2)训练数据不足 ...

  8. java中文乱码的原因及解决方法

    在java开发中都能遇到java中文乱码的情况,怎样才能够恰当地选择汉字编码方式并正确地处理汉字的编码呢?希望通过下面的总结的java中文乱码解决方法对遇到过此类问题的朋友有所帮助. 首先,要想解决j ...

  9. 中文乱码的原因及解决方法

    1.我们常用的编码表: ASCLL:美国标准信息交换码 --->用一个字节的7位可以表示 ISO8859-1:拉丁码表.欧洲码表 --->用一个字节的8位来表示 GB2312:中国的中文编 ...

  10. C++ 内存管理中内存泄漏问题产生原因以及解决方法

    C++内存管理中内存泄露(memory leak)一般指的是程序在申请内存后,无法释放已经申请的内存空间,内存泄露的积累往往会导致内存溢出. 一.内存分配方式 通常内存分配方式有以下三种: (1)从静 ...

最新文章

  1. c语言求一个数组的众数,众数问题 (C语言代码)
  2. Ubuntu下安装DEB包时出现错误的解救方法
  3. Nmap在pentest box中的扫描及应用
  4. 删除Windows 系统快捷方式箭头 Delete Windows Shortcuct Arrows
  5. oracle 转换成csv文件,如何将csv转换为oracle中的表
  6. 为什么WordPress网站应尽量避免使用过多插件
  7. php读取三维数组,php 读取多维数组方法_PHP教程
  8. 探讨继承与实现(二)
  9. 著名模拟鼠标点击软件小点点被收购
  10. python有趣小程序-小码王分享python一些有趣的小程序
  11. dnf登录不了服务器未响应,win7dnf辅助登陆没反应的三种解决方法
  12. 深度残差网络+自适应参数化ReLU激活函数(调参记录2)
  13. swift-集成touch id功能 指纹验证
  14. 关于COM中变体类型VARIANT
  15. 快速排序的优化1: 选取中间值或随机值作为基准,C语言实现
  16. Jetson Nano——使用JetCam官方库调用双CSI摄像头
  17. 在Windows 7下删除注册表项时,权限不足
  18. HikariCP连接池8小时后只有一个连接或session问题
  19. mac 无法访问浏览器
  20. 构建用于签名/加密双证书测试体系的可执行命令

热门文章

  1. 学吉他该如何科学背谱?
  2. python3 使用sorted 实现倒序
  3. win10如何打开摄像头_解决win10相机无法使用,相机崩溃问题
  4. Java程序员年薪40W是什么水平?税前还是税后?
  5. 11开根号不用计算机,数学开根号有什么方法?不用计算器
  6. 单片机基础知识学习笔记
  7. android面试简历!Android中高级面试必知必会,内含福利
  8. 计算机桌面时间设置,桌面的时钟怎么设置
  9. 方差、标准差、协方差
  10. 半导体芯片的基本结构