喜悦国际村 
» 游客:  注册 | 登录 | 搜索 | 统计 | 喜悦证交所 | 帮助

RSS 订阅当前论坛  

$5.95 Web Hosting     

上一主题 下一主题
     
标题: [问题] 帮我看下这个中文字符的问题  
 
ys5955092 (离开布兰卡)
论坛元老
Rank: 8Rank: 8


UID 95550
精华 0
积分 12359
帖子 561
金钱 12359 喜悦币
威望 0
人脉 0
阅读权限 90
注册 2007-7-17
来自 qd
状态 离线
[广告]: 代充Paypal帐号美元
帮我看下这个中文字符的问题

这是手册上的一段程序:
<?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加里个访问服务器控制,就是加了个登录验证。然后就这样了
请指教,谢谢




心甘情愿做Wzhu的小弟。
2008-4-7 10:48 AM#1
查看资料  发短消息  QQ  顶部
 
ys5955092 (离开布兰卡)
论坛元老
Rank: 8Rank: 8


UID 95550
精华 0
积分 12359
帖子 561
金钱 12359 喜悦币
威望 0
人脉 0
阅读权限 90
注册 2007-7-17
来自 qd
状态 离线
[广告]: 代充Paypal帐号美元
没人理我啊,我试了下解析文件,我把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编码?
咋办呢?!!!




心甘情愿做Wzhu的小弟。
2008-4-7 11:20 AM#2
查看资料  发短消息  QQ  顶部
     


  可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题 | 开通个人空间  


 




Powered by Discuz! 6.1.0  © 2001-2010 Comsenz Inc.
Processed in 0.024009 second(s), 6 queries

(冀ICP备05009913号) 管理员:sadly 邮箱/MSN: sadly@phpx.com QQ:824008(长隐) 清除 Cookies - - Archiver - WAP