如何修复请求中的 "latin-1 codec can't encode characters in position"
How to fix "latin-1 codec can't encode characters in position" in requests
我在 python 3 中遇到编码问题。
当我在我的电脑上测试时,我没有收到任何错误:
Python 3.7.3 (default, Jun 24 2019, 04:54:02)
[GCC 9.1.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import requests
>>> print(requests.get('https://www.kinopoisk.ru').text)
everything good.
但是当我 运行 我的 VPS 上的这段代码出现以下错误时:
Python 3.7.3 (default, Apr 3 2019, 19:16:38)
[GCC 8.0.1 20180414 (experimental) [trunk revision 259383]] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import requests
>>> print(requests.get('https://www.kinopoisk.ru').text)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'latin-1' codec can't encode characters in position 393-401: ordinal not in range(256)
python版本相同。不知道怎么回事
我该如何解决?
如果您的环境使用 C os POSIX 语言环境,根据 pep-538,Python 3.7 会自动将其强制转换为支持 UTF-8 的语言环境。
所以您的 PC 似乎设置了 UTF-8
或 C
区域设置,而您的 VPS 使用 latin-1
.
在两台机器上的交互式 Python 会话中尝试 运行 以下操作:
import sys
import locale
print(sys.getfilesystemencoding())
print(locale.getpreferredencoding())
如果您不想更改 VPS 上的语言环境,您可以在其环境中设置 PYTHONUTF8=1
,或者您可以使用 -X utf-8
选项和 Python.
我在 python 3 中遇到编码问题。 当我在我的电脑上测试时,我没有收到任何错误:
Python 3.7.3 (default, Jun 24 2019, 04:54:02)
[GCC 9.1.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import requests
>>> print(requests.get('https://www.kinopoisk.ru').text)
everything good.
但是当我 运行 我的 VPS 上的这段代码出现以下错误时:
Python 3.7.3 (default, Apr 3 2019, 19:16:38)
[GCC 8.0.1 20180414 (experimental) [trunk revision 259383]] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import requests
>>> print(requests.get('https://www.kinopoisk.ru').text)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'latin-1' codec can't encode characters in position 393-401: ordinal not in range(256)
python版本相同。不知道怎么回事
我该如何解决?
如果您的环境使用 C os POSIX 语言环境,根据 pep-538,Python 3.7 会自动将其强制转换为支持 UTF-8 的语言环境。
所以您的 PC 似乎设置了 UTF-8
或 C
区域设置,而您的 VPS 使用 latin-1
.
在两台机器上的交互式 Python 会话中尝试 运行 以下操作:
import sys
import locale
print(sys.getfilesystemencoding())
print(locale.getpreferredencoding())
如果您不想更改 VPS 上的语言环境,您可以在其环境中设置 PYTHONUTF8=1
,或者您可以使用 -X utf-8
选项和 Python.