页:
[1]
| ys5955092 | 2008-4-7 02:48 AM |
|
帮我看下这个中文字符的问题
这是手册上的一段程序:
<?php
$simple = "<para><note>simple爱过 note</note></para>";//这里我加了个中文字符
$p = xml_parser_create();
xml_parse_into_struct($p, $simple, $vals, $index);
xml_parser_free($p);
echo "Index array\n";
print_r($index);
echo "\nVals array\n";
print_r($vals);
?>
输出以后在note里边,只解析到simple,后边的中文和英文没有输出
我尝试转换字符集如下:
<?php
$simple = "<para><note>simple 中噶note</note></para>";
//echo $simple;
$p = xml_parser_create();
xml_parser_set_option($p, XML_OPTION_TARGET_ENCODING, "UTF-8");
xml_parse_into_struct($p, $simple, $vals, $index);
xml_parser_free($p);
echo "Index array\n";
print_r($index);
echo "\nVals array\n";
//print_r($vals);
function ech($val){
foreach ($val as $key => $value){
echo ($key."=>".iconv("UTF-8","GB2312",$value)."<br>");
}
}
function echn($val,$key2){
//echo ($key2."=>".$val."<br>");
echo ($key2."=>".iconv("UTF-8","GB2312",$val)."<br>");
}
foreach($vals as $key => $value)
{
echo ($key."(");
foreach($value as $key2 => $val)
{
((is_array($val))? ech($val):echn($val,$key2));
//
}
echo ")<hr>";
}
?>
输出还是为:
Index array Array ( [PARA] => Array ( [0] => 0 ) [NOTE] => Array ( [0] => 1 ) ) Vals array 0(tag=>PARA
type=>open
level=>1
)
--------------------------------------------------------------------------------
1(tag=>NOTE
type=>open
level=>2
value=>simple ///这里没输出中文
)
请问这是为什么啊?是我apache配置问题吗?
我最近改了httpd.conf加里个访问服务器控制,就是加了个登录验证。然后就这样了
请指教,谢谢 |
| ys5955092 | 2008-4-7 03:20 AM |
|
没人理我啊,我试了下解析文件,我把xml内容写到一个xml文件中,如下:
<?xml version="1.0" encoding="ISO-8859-1" ?>//此处我用别的编码gb2312时就只能iconv成gb2312的才能显示正常
<tb id="1" name="a">
<pr>
<feng>adf风凉
</feng>
<xm>
阿呆
</xm>
</pr>
<htm>
12
</htm>
<tb>
php页面:
<?php
$filename="./xsearch.xml";
//$simple = "<para><pr id=\"1\" name=\"nm\"><note>simple note></note><note>simple note></note></pr><pr><feng> kidd</feng><feng>helel kidd</feng></pr></para>";
$simple = implode("",file($filename));
$parser = xml_parser_create();
xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);
xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1);
xml_parse_into_struct($parser, $simple, $vals, $index);
xml_parser_free($parser);
print_r($index);
echo "<hr>Vals array<br>";
function ech($val){
foreach ($val as $key => $value){
echo ($key."=>".iconv("UTF-8","ISO-8859-1",$value)."<br>");//此处改成gb2312会有错误
}
}
function echn($val,$key2){
//echo ($key2."=>".$val."<br>");
echo ($key2."=>".iconv("UTF-8","ISO-8859-1",$val)."<br>");
}
foreach($vals as $key => $value)
{
echo ($key."(");
foreach($value as $key2 => $val)
{
((is_array($val))? ech($val):echn($val,$key2));
//
}
echo ")<hr>";
}
//print_r($vals);
?>
问题总结:xml中的encoding="ISO-8859-1" 必须和iconv中的输出转换编码相同才能显示正常中文
那么如何才能解析不同编码方式的xml呢?,难道要在php中检查xml编码?
咋办呢?!!! |
Powered by Discuz! Archiver 6.1.0
© 2001-2006 Comsenz Inc.
Processed in 0.010742 second(s), 2 queries |