apache转nginx过程遇到xml如含有encoding=gb2312会无法显示
报错:Warning: DOMDocument::load() [domdocument.load]: Unsupported encoding gb2312
基础环境:centos 5.4 64bit
系统默认编码 en_US.utf-8
apache nginx都按生产要求设置成了charset=gb2312
测试代码
xmltest.php
<?php $xml = new DOMDocument(); $xml->load(test.xml'); foreach($xml->getElementsByTagName('list') as $list) { $value = $list->firstChild->nodeValue; echo $value."<br />"; } ?>
test.xml
<?xml version="1.0" encoding="gb2312"?> <xml> <list>1</list> <list>2</list> <list>3</list> </xml>
如将encoding="gb2312" 改为 encoding="utf-8"则可以正常显示
或者不用encoding选项也可以正常显示
最后发现为gd版本原因,重复测试重新编译gd及php
反复编译使用gd-2.0.35存在这个问题
gd-2.0.33 gd-2.0.34不存在这个问题
附gd编译过程的一些错误解决:
问题一
/usr/bin/ld: cannot find -lltdl
解决办法如下:
cd /usr/share/libtool/libltdl
./configure --prefix=/usr
make
make install
或用 yum install libtool-ltdl-devel
问题二
编译完gd后验证码不正常
Call to undefined function imagettftext()
原因为编译php的时候没把freetype没编译进去
编译php时需要加入--with-freetype-dir
学习是一件很让人兴奋的事情!
浙公网安备 33010602011771号