python使用fpdf中文乱码问题的排查
先说结论
1. 使用如下代码,main.py目录下SimHei.ttf
        class PDF(FPDF):
            def header(self):
                if self.page_no()>1:
                    self.set_y(10)
                    self.set_font('SimHei', '', 10)  
                    self.cell(0, 10, title, 0, 1, 'C') 
       
            def footer(self):
                if self.page_no()>1:
                    self.set_y(-10)
                    self.set_font('SimHei', '', 10)
                    self.cell(0, 10, f'第 {self.page_no()-1} 页', 0, 1, 'C') 
            
        pdf = PDF()
        pdf.add_font('SimHei', '', "SimHei.ttf", uni=True)
        pdf.set_font('SimHei', '', 12)
        pdf.add_page()
        pdf.set_margins(10, 10, 10)
        pdf.set_auto_page_break(auto=True, margin=10) 
2. 所有写入的内容是UTF-8编码
如果是乱码排查方式:
1. 写入的字符串使用cchardet检测编码类型,如果不是utf-8,请使用
import cchardet
# 字符串内容
text = '这是一个测试字符串'
# 转换为字节流(假设原来的编码是 utf-8)
raw_bytes = text.encode('utf-8')
# 检测编码
result = cchardet.detect(raw_bytes)
print(f'检测到的编码格式为:{result["encoding"]}, 置信度为:{result["confidence"]}')
2. 写入的文件是request读取的远端文件,则要求远端文件是utf-8编码,读取的以UTF-8编码读取,
           response = requests.get(files[current_index]['fileurl'])
           response.encoding = 'utf-8'
                    
                
                
            
        
浙公网安备 33010602011771号