我在PHP中使用expat解析XML V1.0(utf8)的内容。
但是遇到中文显示乱码,我在IE中更换编码方式为utf8也不行
使用iconv utf8->gbk 或者 gb2312都不行。
郁闷了一个晚上,偶然的一下,我使用了utf8_decode先处理了下XML来的数据
然后,再使用iconv utf8->gb2312就可以正常显示了
想了半天也搞不懂为什么,看了手册,utf8_decode是把utf8转换成iso啊?
希望高手能不吝赐教,感激,感激!
附:
log.php//读取显示xml
日志
'
',
'op' => '',
'time' => '',
'op' => '',
'time' => '',
'action'=> '',
'ip'=>''
);
?>
';
}
$xml_file = 'Log/log.xml';
$type = 'UTF-8';
$xml_parser = xml_parser_create($type);
xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, false);
xml_parser_set_option($xml_parser, XML_OPTION_TARGET_ENCODING, 'UTF-8');
xml_set_element_handler($xml_parser, 'startElement','endElement');
xml_set_character_data_handler($xml_parser, 'characterData');
if (!($fp = fopen($xml_file, 'r'))) {
die("? $xml_file ?~{'_~}!n");
}
while ($data = fread($fp, 4096)) {
if (!($data = utf8_encode($data))) {
echo 'ERROR'."n";
}
if (!xml_parse($xml_parser, $data, feof($fp))) {
die(sprintf( "XML error: %s at line %dnn",
xml_error_string(xml_get_error_code($xml_parser)),
xml_get_current_line_number($xml_parser)));
}
}
xml_parser_free($xml_parser);
?>
xml 文件
-
-
administrator_back
添加会员wqe
192.168.12.237
-
administrator_back
登入后台
192.168.12.237
-
创建日志文件
192.168.12.237
-
创建日志文件
192.168.12.237