我正在使用 python3。以下是解释问题的示例。
# python3
Python 3.6.8 (default, Sep 26 2019, 11:57:09)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.getdefaultencoding()
'utf-8'
>>> help(str)
| str(object='') -> str
| str(bytes_or_buffer[, encoding[, errors]]) -> str
|
| Create a new string object from the given object. If encoding or
| errors is specified, then the object must expose a data buffer
| that will be decoded using the given encoding and error handler.
| Otherwise, returns the result of object.__str__() (if defined)
| or repr(object).
| encoding defaults to sys.getdefaultencoding().
| errors defaults to 'strict'.
>>> d = b'abcd'
>>> type(d)
<class 'bytes'>
>>> print(d)
b'abcd'
>>> len(d)
4
>>> m = str(d)
>>> type(m)
<class 'str'>
>>> print(m)
b'abcd'
>>> len(m)
7
>>> m.encode()
b"b'abcd'"
>>>
>>> m = str(d, encoding='utf-8')
>>> type(m)
<class 'str'>
>>> print(m)
abcd
>>> len(m)
4
>>>
在帮助(str)中提到“编码默认为 sys.getdefaultencoding()”仍然 str(d)转换带有 b'' 的字符串。注意字符串的长度现在是 7。问题是,
为什么需要明确指定默认编码才能从字节中生成正确的字符串
如何回到字节 - 新类型是字符串。(对字符串进行编码将添加额外的 b)
有没有办法让 pylint 捕捉/警告这个问题。
慕后森
萧十郎
ABOUTYOU
小唯快跑啊
相关分类