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

posted on 2013-04-26 18:07  cycsa  阅读(589)  评论(0)    收藏  举报