喜悦国际村 » XML/HTML/CSS/Js » 帮我看下这个中文字符的问题

页: [1]
ys59550922008-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加里个访问服务器控制,就是加了个登录验证。然后就这样了
请指教,谢谢

ys59550922008-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