function hookHome($params)

if (file_exists('modules/editorial/editorial.xml'))

if ($xml = simplexml_load_file('modules/editorial/editorial.xml'))
{
global $cookie, $smarty;
$smarty->assign(array(
'xml' => $xml,
'homepage_logo' => file_exists('modules/editorial/homepage_logo.jpg'),
'logo_subheading' => 'logo_subheading_'.$cookie->id_lang,
'title' => 'title_'.$cookie->id_lang,
'subheading' => 'subheading_'.$cookie->id_lang,
'paragraph' => 'paragraph_'.$cookie->id_lang,
'this_path' => $this->_path
));
return $this->display(__FILE__, 'editorial.tpl');
}
}這是解析xml並放到smarty中<!-- Module Editorial -->
<div id="editorial_block_center" class="editorial_block">
{if $xml->body->home_logo_link}<a href="{$xml->body->home_logo_link|escape:'htmlall':'big5'}" title="{$xml->body->$title|escape:'htmlall':'big5'|stripslashes}">{/if}
{if $homepage_logo}<img src="{$this_path}homepage_logo.jpg" alt="{$xml->body->$title|escape:'htmlall':'big5'|stripslashes}" />{/if}
{if $xml->body->home_logo_link}</a>{/if}
{if $xml->body->$logo_subheading}{$xml->body->$logo_subheading|stripslashes}{/if} 
{if $xml->body->$title}<h2>{$xml->body->$title|stripslashes}</h2>{/if}
{if $xml->body->$subheading}<h3>{$xml->body->$subheading|stripslashes}</h3>{/if}
{if $xml->body->$paragraph}<div class="rte" ><?php var_dump(iconv('utf-8','big5',{$xml->body->$paragraph|stripslashes})); ?> </div>{/if}
</div>
這是一個.tpl文件,我需要正常顯示xml裡面的編碼為big5的中文文字,請哪個大牛幫幫忙!!!
這樣解析的xml文件編碼為utf-8,而.tpl文件是big5的,直接這樣顯示會有亂碼?要如何做才能顯示正常?

解决方案 »

  1.   

    转码 ,把解析得到的数据从utf-8 转为big5,可以用iconv('utf-8','big5',$data) 试试 
      

  2.   

    我用了,但不行啊,iconv必須用在<?php ?>中,但我這是.tpl文件,如何在.tpl文件中轉換字符串的編碼了
      

  3.   

    用mb_convert_encoding试试看,我做的是日文的一个系统,也乱码,用这个转编码以后就OK了。
    需要mbstring这个,一般搞php应该知道~
      

  4.   

    不好意思,這個我也試過,但它都是在<?php ?>中可以使用,用到.tpl文件中就不行了,就像iconv一樣
      

  5.   

    这种没必要在模板里做吧。
    实在需要的话。那就只有自定义smarty的组合修改器了
    eg:
    {$xml->body->$title|修改器名称:'utf-8':'big5'}
    自定义要在:
    smarty\plugins
    目录下新建:
    modifier.修改器名称.php文件:
    内容如下:
    function smarty_modifier_修改器名称($string, $scharset, $tcharset)
    {
        return iconv($scharset,$tcharset,$string);
    }