Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.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 3.x Python错误“无法对位置中的字符进行编码…”_Python 3.x - Fatal编程技术网

Python 3.x Python错误“无法对位置中的字符进行编码…”

Python 3.x Python错误“无法对位置中的字符进行编码…”,python-3.x,Python 3.x,我在返回线路时收到一个错误: print(page) 在下面的代码块中: import requests page = requests.get("https://fred.stlouisfed.org/series/IC4WSA") from bs4 import BeautifulSoup soup = BeautifulSoup(page.content, 'html.parser') print(soup) 返回的错误如下: return codecs.charmap_en

我在返回线路时收到一个错误:

print(page)
在下面的代码块中:

import requests 

page = requests.get("https://fred.stlouisfed.org/series/IC4WSA")

from bs4 import BeautifulSoup

soup = BeautifulSoup(page.content, 'html.parser')

print(soup)
返回的错误如下:

return codecs.charmap_encode(input,self.errors,encoding_table)[0]
UnicodeEncodeError: 'charmap' codec can't encode characters in position 
22971-22979: character maps to <undefined>
我是否需要带有附加字符对象的python库来返回解析后的html?如果是,我如何确定返回解析的html值所需的对象/字符类型?我不确定如何查看位置22971-22979处的字符值


谢谢

这里发生的事情是,当Python试图向控制台打印一个字符串打印一个BeautifulSoup对象时,需要将unicode字符串转换为控制台可以显示的字节

将unicode转换为字节称为编码字符串。Python可以使用几种编码进行转换,UTF-8是其中之一,latin-1是另一种,cp1252 cp=代码页,Windows概念又是另一种。其中有很多,请参阅文档

您可以这样检查Python解释器将使用什么编码:

>>> import sys
>>> sys.stdout.encoding
'utf-8'
Python如何决定尝试使用何种编码取决于几个因素:

如果您在Windows上使用Python<3.6,则将使用当前的Windows控制台代码页。您可以使用环境变量pythonionencoding覆盖编码。 如果您在Windows上使用的是Python3.6,那么将使用utf-8编码,除非您设置了一些特殊的环境变量以使用传统的Windows编码功能。 根据您的错误,我猜您正在Windows上运行Python<3.6。该错误表示所选编码无法表示HTTP响应中的一个unicode字符。更改控制台或覆盖编码:

c:\> SET PYTHONIOENCODING=utf-8
c:\> python myscript.py
... you should not get an error, but the console will not be able to 
display all characters correctly
如果您这样做:

c:\> python myscript.py > output.txt

例如,将输出重定向到一个文件,您可以在理解utf-8的文本编辑器中打开该文件,例如notepad++。

我想您是指printsoup?您必须在Windows上,对吗?Python试图将输入UTF8转换为crummy!控制台字符集,它失败。也就是说。。。文本[22971:22979]仅显示空格。将控制台配置为接受UTF8并重试。感谢所有回复…我通过添加在控制台中打印的.encode'utf-8'覆盖了编码。另外,学习.txt输出方法也很有趣。再次感谢!