UnicodeEncodeError: „charmap“ kodekas negali koduoti simbolių

Bandau išvalyti svetainę, bet tai suteikia man klaidą.

Naudoju šį kodą:

 import urllib.request from bs4 import BeautifulSoup get = urllib.request.urlopen("https://www.website.com/") html = get.read() soup = BeautifulSoup(html) print(soup) 

Ir aš gaunu šią klaidą:

 File "C:\Python34\lib\encodings\cp1252.py", line 19, in encode return codecs.charmap_encode(input,self.errors,encoding_table)[0] UnicodeEncodeError: 'charmap' codec can't encode characters in position 70924-70950: character maps to <undefined> 

Ką aš galiu padaryti, kad išspręsti šią problemą?

75
23 нояб. nustatė SstrykerR 23 nov. 2014-11-23 21:47 '14, 21:47 2014-11-23 21:47
@ 5 atsakymai

Aš ją .encode("utf-8") pridedant .encode("utf-8") soup .

Tai reiškia, kad print(soup) tampa print(soup.encode("utf-8")) .

110
23 нояб. atsakymas pateikiamas SstrykerR 23 nov. 2014-11-23 22:19 '14, 10:19 PM 2014-11-23 22:19

UnicodeEncodeError išvalytą žiniatinklio turinį į failą, aš gavau tą patį UnicodeEncodeError . Norėdami tai ištaisyti, šį kodą pakeitiau:

 with open(fname, "w") as f: f.write(html) 

su šiuo:

 import io with io.open(fname, "w", encoding="utf-8") as f: f.write(html) 

Naudojant „ io suderinamas su „Python 2“.

Jei jums reikia tik „Python 3“ palaikymo, galite naudoti integruotą open funkciją:

 with open(fname, "w", encoding="utf-8") as f: f.write(html) 
84
28 февр. atsakymas pateikiamas dvigubai 28 vasario mėn. 2017-02-28 00:00 '17 0:00 2017-02-28 00:00

„Python 3.7“ ir „Windows 10“ operacijose šis darbas (aš nesu įsitikinęs, ar jis veiks kitose platformose ir / ar kitose „Python“ versijose)

Šios eilutės pakeitimas:

with open('filename', 'w') as f:

Su šiuo:

with open('filename', 'w', encoding='utf-8') as f:

Priežastis, kodėl ji veikia, yra tai, kad, naudojant failą, kodavimas pakeičiamas į UTF-8, todėl UTF-8 simboliai gali būti konvertuojami į tekstą, o ne grąžina klaidą, kai susiduria su simboliu UTF-8, kuris dabartinis kodavimas nepalaiko.

4
08 окт. Sabbir Ahmed atsakymas 08 spalis 2018-10-08 19:20 '18 19:20 2018-10-08 19:20

Tiems, kurie vis dar gauna šią klaidą, pridėsime encode("utf-8") soup pat ištaisys.

 soup = BeautifulSoup(html_doc, 'html.parser').encode("utf-8") print(soup) 
1
01 окт. atsakymas, kurį pateikė Pseudo Sudo spalis 01 2016-10-01 22:09 '16 at 22:09 pm 2016-10-01 22:09

Išsaugant atsakymą į užklausą, tą patį klaidą buvo išleista „Python 3.7“ 10 >

 import requests resp = requests.get('https://en.wikipedia.org/wiki/NIFTY_50') print(resp.encoding) with open ('NiftyList.txt', 'w') as f: f.write(resp.text) 

Kai atidarius komandą pridėjau kodavimo = "utf-8" kodą, jis išsaugojo failą teisingu atsakymu.

 with open ('NiftyList.txt', 'w', encoding="utf-8") as f: f.write(resp.text) 
0
22 дек. Atsakymą pateikė Abhishek Jain . 2018-12-22 17:31 '18, 17:31 pm 2018-12-22 17:31

Kiti klausimai apie žymes arba Užduoti klausimą