最近在用FPDF生成pdf时,用UTF-8编码的日文或者繁体文字始终都是乱码。查了相关资料后,才发现FPDF本身并不支持UTF-8,除此之外,FPDF对中,日,韩支持的扩展类中使用的是CID字体,和我们window中用到的字体的都不同。因此当你使用支持中文的扩展类时,生成pdf时对日文肯定是不支持的。而TCPDF据说是支持UTF-8,但使用后发现对中文的支持很烂,还要手工转换字体,其方式和UFPDF是一样的。而我们很难找到一种同时对中,日,韩都支持的字体。用msgothic也只是对日文和繁体支持的比较好而已,对简体中文用华文中宋等字体显示更好一些,因此我的结论是,用FPDF生成pdf时,如果文件包含中文,日文,韩文等内容时,生成的pdf肯定有乱码或者空白。除非我们确切的知道文件中哪些地方显示中文,哪些地方显示日文,那我们就可以在开始的时用addfont添加这些字体,然后在输出的时候用setfont指定要输出的内容采取哪种字体。
此外,在解决乱码问题时容易遇到的以下问题:
现象一:当修改页面字符集为UTF-8,页面出现空白,不显示任何内容
都是字符集charset惹的祸,理由在于用charset指定为UTF-8之前,已经有非UTF-8编码文字的输出。比如一般html页面都是把title标签放在meta标签前面,因此80%的可能是title内容的编码和UTF-8引起的,最好的解决方法就是把title用UTF-8编码后再输出,或者在meta之后指定title。
现象二:页面报js错误,但仔细查看源代码后,发现没有任何问题。
同样是编码不一致导致的。这时要仔细查看页面是否引用了非UTF-8编码的文件,一个典型的情况就是外部js文件中的中文(包含注释等)引起的,解决方法就是把中文去掉,或者全部改为英文即可