如何解决PdfReadWarning提示的/GBK-EUC-H等高级编码未实现问题?
如何解决PdfReadWarning提示的/GBK-EUC-H等高级编码未实现问题?
嘿,我来帮你搞定这个PDF读取时的编码警告问题!这个警告本质是你用的PDF处理工具(比如PyPDF2、pdfminer这类)对PDF里的GBK-EUC-H、UniGB-UCS2-H这类中文字体编码支持不足导致的,给你几个实用的解决办法:
替换/升级PDF处理库
有些旧版本的库对中文字体兼容性很差,比如早期的PyPDF2。你可以试试换成pdfplumber,它对中文编码的支持要友好很多,安装命令直接在终端敲:pip install pdfplumber,用它来读取PDF大概率能避开这个编码坑。要是你习惯用PyPDF2,那就升级到最新版本试试:pip install --upgrade PyPDF2,新版本可能修复了不少编码相关的bug。手动添加缺失的字体文件
首先你不用特意找“GBK-EUC-H”“UniGB-UCS2-H”专属字体,咱们系统自带的宋体(SimSun.ttf)、黑体(SimHei.ttf)这类通用中文字体就能适配这些编码。接下来找对字体存放的目录:- 如果用的是PyPDF2,字体目录一般在你Python安装路径下的
Lib/site-packages/pypdf2/fontdata文件夹里; - 如果是依赖pdfminer的工具(比如pdfplumber),字体目录就在
Lib/site-packages/pdfminer/font文件夹里;
把你找到的中文字体文件复制进去,重启脚本再读取PDF,警告应该就消失了。
- 如果用的是PyPDF2,字体目录一般在你Python安装路径下的
临时屏蔽警告(不推荐长期用)
要是你只是嫌警告烦,且PDF内容读取起来没乱码,那可以用Python的警告模块把它关掉,代码如下:import warnings warnings.filterwarnings("ignore", category=UserWarning, module="pdfminer")不过这个方法只是“眼不见为净”,没真正解决编码问题,要是后续出现乱码还是得用前两个方法。
备注:内容来源于stack exchange,提问作者Shuan




