UnicodeEncodeError: 'latin-1' codec can't encode when trying to write hebrew to a PDF
UnicodeEncodeError: 'latin-1' codec can't encode when trying to write hebrew to a PDF
我正在尝试使用 Python
中的 FPDF 库将一些希伯来语单词写入 pdf 文件
我遇到了一个错误
UnicodeEncodeError: 'latin-1' 编解码器无法对位置 51-55 中的字符进行编码:序号不在范围内 (256)
我该如何解决这个问题并将希伯来语写入 PDF 文件?
在下面添加我的代码
pdf = FPDF()
pdf.add_page()
pdf.set_font("Arial", size=15)
welcome="היייי"
pdf.cell(200, 10, txt=welcome, ln=1, align="C")
pdf.output("simple_demo.pdf")
来自 set_font
文档:
Standard fonts use Latin-1 encoding by default, (...)
和
Default encoding is not specified, but all text writing methods accept only Unicode for external fonts and one byte encoding for standard.
您的 Arial
是标准系列,因此它只接受 Latin-1
编码(1 字节)。因此,您应该使用非标准字体更改字体,以便拥有 Unicode 字体,从而获得希伯来语文本。
看这个例子:https://pyfpdf.readthedocs.io/en/latest/Unicode/index.html
from fpdf import FPDF
pdf = FPDF()
pdf.add_page()
# Add a DejaVu Unicode font (uses UTF-8)
# Supports more than 200 languages. For a coverage status see:
# http://dejavu.svn.sourceforge.net/viewvc/dejavu/trunk/dejavu-fonts/langcover.txt
pdf.add_font('DejaVu', '', 'DejaVuSansCondensed.ttf', uni=True)
pdf.set_font('DejaVu', '', 14)
text = u"""
English: Hello World
Greek: Γειά σου κόσμος
Polish: Witaj świecie
Portuguese: Olá mundo
Russian: Здравствуй, Мир
Vietnamese: Xin chào thế giớia
Arabic: مرحبا العالم
Hebrew: שלום עולם
"""
我正在尝试使用 Python
中的 FPDF 库将一些希伯来语单词写入 pdf 文件我遇到了一个错误
UnicodeEncodeError: 'latin-1' 编解码器无法对位置 51-55 中的字符进行编码:序号不在范围内 (256)
我该如何解决这个问题并将希伯来语写入 PDF 文件?
在下面添加我的代码
pdf = FPDF()
pdf.add_page()
pdf.set_font("Arial", size=15)
welcome="היייי"
pdf.cell(200, 10, txt=welcome, ln=1, align="C")
pdf.output("simple_demo.pdf")
来自 set_font
文档:
Standard fonts use Latin-1 encoding by default, (...)
和
Default encoding is not specified, but all text writing methods accept only Unicode for external fonts and one byte encoding for standard.
您的 Arial
是标准系列,因此它只接受 Latin-1
编码(1 字节)。因此,您应该使用非标准字体更改字体,以便拥有 Unicode 字体,从而获得希伯来语文本。
看这个例子:https://pyfpdf.readthedocs.io/en/latest/Unicode/index.html
from fpdf import FPDF
pdf = FPDF()
pdf.add_page()
# Add a DejaVu Unicode font (uses UTF-8)
# Supports more than 200 languages. For a coverage status see:
# http://dejavu.svn.sourceforge.net/viewvc/dejavu/trunk/dejavu-fonts/langcover.txt
pdf.add_font('DejaVu', '', 'DejaVuSansCondensed.ttf', uni=True)
pdf.set_font('DejaVu', '', 14)
text = u"""
English: Hello World
Greek: Γειά σου κόσμος
Polish: Witaj świecie
Portuguese: Olá mundo
Russian: Здравствуй, Мир
Vietnamese: Xin chào thế giớia
Arabic: مرحبا العالم
Hebrew: שלום עולם
"""