在阅读有关编解码器,编码和解码的内容时,我发现我应该直接在字符串上使用编码函数,并且工作正常。我之后阅读了除了不同的utf编码之外的unicode和ascii是什么。
但是当进一步阅读时,我发现大多数人似乎都在导入编解码器模块并使用模块中的编码。我没有看到String.encode和codecs.encode之间有太大的区别..我使用哪一个很重要?我只是在编码函数中指定我需要的编码。
另外,在阅读这个帖子python string encode / decode时,我查看了接受答案中的链接,该链接显示了一个幻灯片放映,假设“完全揭开unicode和utf的神秘面纱”,但在其中一张幻灯片中,他说utf是用于将数字转换为我看不出的字符是正确的。
根据我在http://www.rrn.dk/the-difference-between-utf-8-and-unicode的理解,这也是在另一个SO线程中引用的,utf不是将数字转换为字符。它将二进制数转换为在unicode中找到的数字或正在使用的另一个选择的字符集。所以utf会将二进制数翻译成一个数字,然后unicode会再将这个数字翻译成一个字符。所以当他试图完全神秘化时,他错了吗?
答案 0 :(得分:1)
这两个函数的Python文档页面在这里:
https://docs.python.org/2/library/stdtypes.html#str.encode
https://docs.python.org/2/library/codecs.html#codecs.encode
str.encode()
:
"this is a string".encode()
使用字符串作为参数调用 codecs.encode()
,如下所示:
codecs.encode("this is a string")
他们各自采用可选的encoding参数。
根据文档页面, str.encode()
的默认编码是当前默认编码,但根据Unicode HOWTO,"ascii"
codecs.encode()
的默认编码为"ascii"
这两个函数都采用默认为errors
的{{1}}参数。
看起来他们几乎一样,除了他们被称呼的方式。
答案 1 :(得分:1)
>output.txt
将文本编码为字节,将文本编码为字节,然后将字节编码为字节
codecs.encode(obj, encoding='utf-8', errors='strict')
将文本编码为字节
所以,我认为2.⊆1。
答案 2 :(得分:0)
一个区别是您可以使用哪些编解码器。 str.encode 适用于字符串编解码器之间的转换,但请尝试将字符串转换为 base64。
str.encode("base64")
LookupError: 'base64' is not a text encoding; use codecs.encode() to handle arbitrary codecs
但这会起作用
codecs.encode(str.encode(), "base64")
或者这个
base64.encodestring(str.encode())