Я получаю следующую ошибку кодировки Unicode.
Когда я запускаю программу, представленную ниже, я получаю сообщение об ошибке, связанной с кодировкой Unicode.
import bs4
import requests
from xhtml2pdf import pisa # import python module
from xhtml2pdf.config.httpconfig import httpConfig
res = requests.get("https://www.insightsonindia.com/2018/06/04/insights-daily-current-affairs-04-june-2018/")
soup = bs4.BeautifulSoup(res.text, 'lxml')
pf = soup.find("div", class_="pf-content")
sourceHtml =str(pf)
outputFilename = "test.pdf"
def convertHtmlToPdf(sourceHtml, outputFilename):
# open output file for writing (truncated binary)
httpConfig.save_keys('nosslcheck', True)
resultFile = open(outputFilename, "w+b")
# convert HTML to PDF
pisaStatus = pisa.CreatePDF(sourceHtml, dest=resultFile, encoding="utf-8")
# close output file
resultFile.close() # close output file
# return True on success and False on errors
return pisaStatus.err
# Main program
if __name__ == "__main__":
pisa.showLogging()
convertHtmlToPdf(sourceHtml, outputFilename)
Ошибка указана ниже
self._output(request.encode('ascii'))
UnicodeEncodeError: 'ascii' codec can't encode character '\u2019' in position 37: ordinal not in range(128)
Я пытаюсь загрузить часть веб-сайта, используя xhtml2pdf. Для этого я использовал bs4, очистил сайт и сохранил его. Затем сохраните его в pdf с помощью xhtml2pdf. Большую часть времени это работало как шарм. Но для этого случая это дает мне ошибку. Ссылка на полный код в github дана ниже
Ссылка на полный код доступна здесь
xhtml2pdf кодируется с помощью ascii, поскольку мой html-файл содержит символы, отличные от ascii, он показывает ошибку. И я не знаю, как изменить кодировщик в xhtml2pdf. Опускать символы, отличные от ascii, нельзя. Если я проигнорирую это, ссылка на изображение будет повреждена, и изображение не будет отображаться в формате PDF.
complete traceback
```Traceback (most recent call last):
File "test3.py", line 80, in
convertHtmlToPdf(sourceHtml, outputFilename)
File "test3.py", line 68, in convertHtmlToPdf
pisaStatus = pisa.CreatePDF(sourceHtml, dest=resultFile, encoding= 'utf-8')
File "C:\Users\Ananthu\AppData\Local\Programs\Python\Python37-32\lib\site-packages\xhtml2pdf\document.py", line 97, in pisaDocument
encoding, context=context, xml_output=xml_output)
File "C:\Users\Ananthu\AppData\Local\Programs\Python\Python37-32\lib\site-packages\xhtml2pdf\document.py", line 59, in pisaStory
pisaParser(src, context, default_css, xhtml, encoding, xml_output)
File "C:\Users\Ananthu\AppData\Local\Programs\Python\Python37-32\lib\site-packages\xhtml2pdf\parser.py", line 759, in pisaParser
pisaLoop(document, context)
File "C:\Users\Ananthu\AppData\Local\Programs\Python\Python37-32\lib\site-packages\xhtml2pdf\parser.py", line 700, in pisaLoop
pisaLoop(node, context, path, **kw)
File "C:\Users\Ananthu\AppData\Local\Programs\Python\Python37-32\lib\site-packages\xhtml2pdf\parser.py", line 644, in pisaLoop
pisaLoop(nnode, context, path, **kw)
File "C:\Users\Ananthu\AppData\Local\Programs\Python\Python37-32\lib\site-packages\xhtml2pdf\parser.py", line 644, in pisaLoop
pisaLoop(nnode, context, path, **kw)
File "C:\Users\Ananthu\AppData\Local\Programs\Python\Python37-32\lib\site-packages\xhtml2pdf\parser.py", line 644, in pisaLoop
pisaLoop(nnode, context, path, **kw)
[Previous line repeated 2 more times]
File "C:\Users\Ananthu\AppData\Local\Programs\Python\Python37-32\lib\site-packages\xhtml2pdf\parser.py", line 514, in pisaLoop
attr = pisaGetAttributes(context, node.tagName, node.attributes)
File "C:\Users\Ananthu\AppData\Local\Programs\Python\Python37-32\lib\site-packages\xhtml2pdf\parser.py", line 124, in pisaGetAttributes
nv = c.getFile(nv)
File "C:\Users\Ananthu\AppData\Local\Programs\Python\Python37-32\lib\site-packages\xhtml2pdf\context.py", line 818, in getFile
return getFile(name, relative or self.pathDirectory)
File "C:\Users\Ananthu\AppData\Local\Programs\Python\Python37-32\lib\site-packages\xhtml2pdf\util.py", line 738, in getFile
file = pisaFileObject(*a, **kw)
File "C:\Users\Ananthu\AppData\Local\Programs\Python\Python37-32\lib\site-packages\xhtml2pdf\util.py", line 644, in init
conn.request("GET", path)
File "C:\Users\Ananthu\AppData\Local\Programs\Python\Python37-32\lib\http\client.py", line 1229, in request
self._send_request(method, url, body, headers, encode_chunked)
File "C:\Users\Ananthu\AppData\Local\Programs\Python\Python37-32\lib\http\client.py", line 1240, in _send_request
self.putrequest(method, url, **skips)
File "C:\Users\Ananthu\AppData\Local\Programs\Python\Python37-32\lib\http\client.py", line 1107, in putrequest
self._output(request.encode('ascii'))
UnicodeEncodeError: 'ascii' codec can't encode character '\u2019' in position 37: ordinal not in range(128)
encode
не пытается сопоставить не-ASCII-символы с похожими ASCII-символами. - person chepner   schedule 08.02.2019CreatePDF
(единственный вероятный кандидат) пытается преобразовать произвольный текст Unicode в ASCII. - person chepner   schedule 08.02.2019