中文乱码——编码问题

编码问题

1.读取文件乱码
原因:python2.7默认使用unicode编码读取文件
方法:在文件头部设置编码#coding=utf-8

2.写入文件乱码
原因:python2.7默认使用unicode编码
方法:设置默认输出编码为utf-8即可
import sys
reload(sys)
sys.setdefaultencoding('utf-8')

3.在使用reportlab.pdfgen 中的画布 canvas输出乱码
原因:reportlab中没有中文字体
方法:引入中文字体
from reportlab.pdfgen import canvas
from reportlab.pdfgen.canvas import Canvas  
from reportlab.pdfbase import pdfmetrics  
from reportlab.pdfbase.cidfonts import UnicodeCIDFont
#字体一:CID字体(不推荐)
pdfmetrics.registerFont(UnicodeCIDFont('STSong-Light'))
from reportlab.pdfbase.ttfonts import TTFont
#字体二:linux系统字体(推荐)
import os
from reportlab.pdfbase import pdfmetrics,ttfonts
pdfmetrics.registerFont(ttfonts.TTFont('zenhei',os.path.join("wqy-zenhei", 'wqy-zenhei.ttc')))
pdfmetrics.registerFont(ttfonts.TTFont('microhei',os.path.join("wqy-microhei", 'wqy-microhei.ttc')))
canvas.Canvas("helloworld.pdf")
Canvas.setFont('zenhei',12)
字体一:STSong-Light宋体是CID字体,在本方案处理中文没有问题但是处理英文字体会紧贴在一起,非常不美观。
字体二:是自己下载的字体,从linux字体库/usr/share/fonts/下引入的os.path.join("字体文件夹", '字体文件名')
zenhei文泉驿正黑(推荐)
microhei文泉驿微米黑,换行会出现一些特殊符号像两个完全闭合的中括号[]

posted @ 2017-09-30 15:01  大妖小白  阅读(1926)  评论(3编辑  收藏  举报