5

在我的代码中,我不断收到此错误...

UnicodeEncodeError: 'charmap' codec can't encode character '\u2013' in position 390: character maps to <undefined>

我试图放置一个除了 UnicodeError 和 UnicodeEncodeError 但没有任何作用,问题是它是用户输入,所以我无法控制他们输入的内容,所以我需要所有编码错误来显示一个显示错误而不是崩溃程序的打印.. .

try:
    argslistcheck = argslist[0]
    if argslistcheck[0:7] != "http://":
        argslist[0] = "http://" + argslist[0]
    with urllib.request.urlopen(argslist[0]) as url:
        source = url.read()
        source = str(source, "utf8")
    except urllib.error.URLError:
        print("Couln't connect")
        source = ""
    except UnicodeEncodeError:
        print("There was an error encrypting...")
        source = ""

追溯:

Traceback (most recent call last):
  ..... things leading up to error
  File "C:\path", line 99, in grab print(source)
  File "C:\Python33\lib\encodings\cp437.py", line 19, in encode
    return codecs.charmap_encode(input,self.errors,encoding_map)[0]
UnicodeEncodeError: 'charmap' codec can't encode character '\u2013' in position 390: character maps to <undefined>
4

4 回答 4

5

您的打印失败。您的 Windows 控制台不支持打印 UTF-8,您需要更改代码页:

chcp 65001

这是Windows 命令,而不是 python 命令。您可能还需要切换字体,Lucida Sans Console 是一种 Unicode 字体,可以处理更多字形。

于 2013-02-24T21:45:04.297 回答
5

试试这个:

source = str(source, encoding='utf-8', errors = 'ignore')

或者看看这个帖子的问题

于 2013-02-24T21:49:10.197 回答
3

试试这个来替换 str(): source = source.encode('UTF-8')

于 2013-02-24T21:39:52.860 回答
1
start_url="https://www.indeed.co.in/jobs?q=teacher&l=India"
page_data=requests.get(start_url)
soup=BeautifulSoup(page_data.text,"lxml")
fname='1download'
with open(fname,'w')as f:
    f.write(soup.prettify())
f.close()

return codecs.charmap_encode(input,self.errors,encoding_table)[0]
UnicodeEncodeError: 'charmap' codec can't encode character '\u20b9' in position 
235677: character maps to <undefined>

这两个错误都可以通过将 utf-8 作为编码添加到文件来解决。还请注意,您必须使用 open() 方法来打开文件

f=open() 也会给你错误

这是正确的代码:

 start_url="https://www.indeed.co.in/jobs?q=teacher&l=India"
 page_data=requests.get(start_url)
 soup=BeautifulSoup(page_data.text,"lxml")
 fname='1download'
 with open(fname,'w',encoding="utf-8")as f:
     f.write(soup.prettify())
 f.close()
于 2020-08-02T16:54:28.820 回答