在更新Python 2.x-> 3.x时对Unicode字符串行为进行故障排除

罗卡蒙德(JC Rocamonde)

我在项目中使用的是Python 2.7,由于已经看到Python 3.5即将发布,因此决定升级Python解释器。

我正在使用base64编码。由于字符串对象在新的Python版本中有所不同,因此出现以下错误:

TypeError: 'str' does not support the buffer interface

我已经发现在将字符串传递给此函数('string'.encode()之前必须对其进行编码,但是没有办法自动将字符串编码为unicode吗?

亚历克斯·马特利

在Python 3中,str 意思是“ unicode文本”-无论您将其表示为'mystring'还是u'mystring'不带任何区别(为了允许与Python 2的移植/共存而允许后者)。

要指示字节二进制字符串,可以使用b'mystring'

https://docs.python.org/3/library/base64.html所述

该模块提供用于编码二进制数据的功能

(我的重点)-与文本(即unicode)数据无关。逻辑上的结果是,模块中的所有函数都期望或返回字节字符串。

不确定为什么不能在程序中直接使用字节字符串(而不是文本字符串),但是如果有问题,最简单的方法是将base64模块中所需的函数包装到提供任何编码(文本- >字节)或所需的解码(字节->文本)。例如:

import base64

def b64encode(text, codec='utf8'):
    return base64.b64encode(text.encode(codec))

然后b64encode在整个代码其余部分中使用它,而不是base64.b64encode直接在解码部分中使用-等等。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Python 2.x字符串:Unicode与字节

来自分类Dev

Python3x中的字符串与Python2.x中的字符串不同,但仍能正常工作

来自分类Dev

Python readlines() 3.X 到 2.X

来自分类Dev

将 Python 2x 移植到 3x

来自分类Dev

python 2.x和3.x中的正则表达式unicode

来自分类Dev

Python3x + MatPlotLib-更新图表吗?

来自分类Dev

Python:具有未定义变量的Eval(2 * x + x = 3 * x)

来自分类Dev

Python 3.x Tkinter串行读取

来自分类Dev

如何为Python 3.x安装psycopg2?

来自分类Dev

如何为Python 3.x安装psycopg2?

来自分类Dev

在扫描字符串文字时使用python 3.x EOL进行cx_freeze

来自分类Dev

python 3.X 显示与我在程序中对字符串进行硬编码时不同的输入

来自分类Dev

如何在 python 2.x 和 3.x 中将 unicode 列表转换为包含 python 字典的列表

来自分类Dev

如何将Python 2 unicode()函数转换为正确的Python 3.x语法

来自分类Dev

如何使Python读取用户输入函数?(例如f(x)= 2x ^ 2 + 3x + 1)

来自分类Dev

为什么x in(1,2,3):比x == 1或x == 2或x == 3快?

来自分类Dev

如何使用Python 3.x ast模块解析Python 2.x?

来自分类Dev

无法在Python 2.x和Python 3.x中导入turtle模块

来自分类Dev

Python 2.x和Python 3.x的脚本不兼容

来自分类Dev

Python 2.x和Python 3.x之间的生成器评估差异

来自分类Dev

地理编码策略-Python 2.x至Python 3.x

来自分类Dev

Python 3.x 和 Python 2.x 在 while 循环中的区别

来自分类Dev

如何将此 Python2.x 代码转换为 Python3.x?

来自分类Dev

当 python 2x 是你的默认 python 版本但你在 Bash 上使用 python 3x 时,你如何在 pip 上安装 Django 2x

来自分类Dev

为什么Python 2.x会使用字符串格式+ Unicode引发异常?

来自分类Dev

为什么Python 2.x会使用字符串格式+ Unicode引发异常?

来自分类Dev

Python 2.x和3.x中的有效语法是否引发异常?

来自分类Dev

处理Python 2.x和3.x中的缓冲区

来自分类Dev

python 2.x和3.x之间的多线程开销差异

Related 相关文章

  1. 1

    Python 2.x字符串:Unicode与字节

  2. 2

    Python3x中的字符串与Python2.x中的字符串不同,但仍能正常工作

  3. 3

    Python readlines() 3.X 到 2.X

  4. 4

    将 Python 2x 移植到 3x

  5. 5

    python 2.x和3.x中的正则表达式unicode

  6. 6

    Python3x + MatPlotLib-更新图表吗?

  7. 7

    Python:具有未定义变量的Eval(2 * x + x = 3 * x)

  8. 8

    Python 3.x Tkinter串行读取

  9. 9

    如何为Python 3.x安装psycopg2?

  10. 10

    如何为Python 3.x安装psycopg2?

  11. 11

    在扫描字符串文字时使用python 3.x EOL进行cx_freeze

  12. 12

    python 3.X 显示与我在程序中对字符串进行硬编码时不同的输入

  13. 13

    如何在 python 2.x 和 3.x 中将 unicode 列表转换为包含 python 字典的列表

  14. 14

    如何将Python 2 unicode()函数转换为正确的Python 3.x语法

  15. 15

    如何使Python读取用户输入函数?(例如f(x)= 2x ^ 2 + 3x + 1)

  16. 16

    为什么x in(1,2,3):比x == 1或x == 2或x == 3快?

  17. 17

    如何使用Python 3.x ast模块解析Python 2.x?

  18. 18

    无法在Python 2.x和Python 3.x中导入turtle模块

  19. 19

    Python 2.x和Python 3.x的脚本不兼容

  20. 20

    Python 2.x和Python 3.x之间的生成器评估差异

  21. 21

    地理编码策略-Python 2.x至Python 3.x

  22. 22

    Python 3.x 和 Python 2.x 在 while 循环中的区别

  23. 23

    如何将此 Python2.x 代码转换为 Python3.x?

  24. 24

    当 python 2x 是你的默认 python 版本但你在 Bash 上使用 python 3x 时,你如何在 pip 上安装 Django 2x

  25. 25

    为什么Python 2.x会使用字符串格式+ Unicode引发异常?

  26. 26

    为什么Python 2.x会使用字符串格式+ Unicode引发异常?

  27. 27

    Python 2.x和3.x中的有效语法是否引发异常?

  28. 28

    处理Python 2.x和3.x中的缓冲区

  29. 29

    python 2.x和3.x之间的多线程开销差异

热门标签

归档