Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python “如何修复”;拉丁语-1编解码器可以';t将字符编码在“位置”;请求中_Python_Python 3.x_Python Requests_Python Unicode - Fatal编程技术网

Python “如何修复”;拉丁语-1编解码器可以';t将字符编码在“位置”;请求中

Python “如何修复”;拉丁语-1编解码器可以';t将字符编码在“位置”;请求中,python,python-3.x,python-requests,python-unicode,Python,Python 3.x,Python Requests,Python Unicode,我在用Python3编码时遇到了问题。 当我在电脑上测试时,我没有发现任何错误: 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://

我在用Python3编码时遇到了问题。 当我在电脑上测试时,我没有发现任何错误:

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 3.7.3(默认值,2019年4月3日19:16:38)
linux上的[GCC 8.0.1 20180414(实验)[中继修订版259383]]
有关详细信息,请键入“帮助”、“版权”、“信用证”或“许可证”。
>>>导入请求
>>>打印(请求.get()https://www.kinopoisk.ru)。文本)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
UnicodeEncodeError:“latin-1”编解码器无法对位置393-401中的字符进行编码:序号不在范围(256)内
python版本是相同的。我不知道发生了什么事


如何修复它?

根据pep-538,如果您的环境使用C os POSIX语言环境,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
,或者可以在Python中使用
-X utf-8
选项。

在两台机器的命令提示符下
locale
的输出是什么?有什么不同吗?LANG=en_US.UTF-8 LC_CTYPE=“en_US.UTF-8”LC_NUMERIC=ru_ru.UTF-8 LC_TIME=ru_.UTF-8 LC_COLLATE=“en_US.UTF-8”LC_MONETARY=ru_ru.UTF-8 LC_MESSAGES=“en_US.UTF-8”LC\u PAPER=ru\u ru.UTF-8 LC\u NAME=ru\u ru.UTF-8 LC\u ADDRESS=ru\u ru.UTF-8 LC\u MEASUREMENT=ru\u ru.UTF-8 LC\u IDENTIFICATION=ru\u.UTF-8 LC\u ALL=这些区域设置都是相同的@Joachim isaksson谢谢,当我添加PYTHONUTF8=1时,一切都开始工作了我的脚本在命令行上工作,但在cron中没有工作。根据您的指导,解决方案是在我的crontab中将
LANG=“en_US”
更改为
LANG=“en_US.utf8”
。干杯!:-)如何添加PYTHONUTF8=1?您要添加哪个文件?@Nguaial它是一个环境变量。设置方式取决于您使用的操作系统。@AstroFloyd可能会出现UTF-8区域设置丢失的情况,在这种情况下,在Linux下,您必须首先通过
locale gen en_US.utf8
生成该区域设置。您需要管理员权限才能运行此命令。