smarty模板中的非拉丁字符在使用getDateLocal时显示

时间:2013-03-06 10:35:41

标签: php encoding smarty

如何修复此错误?我正在使用smarty模板。这是代码:

writeTR2($lngstr['page_visitordetails_startdate'], getDateLocal($lngstr['language']['date_format_full'], $i_rSet1->fields["startdate"]));

结果是 05,2013 04:16:39 应该像这样Март05,201304:16:39

我的数据库和网站都使用UTF-8,在其他地方我没有这个问题一切都很好。我的意思是西里尔字符显示良好。但是当我使用这个函数getDateLocal时会出现问题。当我将编码更改为西里尔语时(ISO-8859-5) 该功能显示我的性格,但整个网站显示不正确。 请帮帮我。

3 个答案:

答案 0 :(得分:0)

尝试使用以下php函数:

convert_cyr_string ( string $str , string $from , string $to )

有关详细说明,请参阅http://php.net/manual/en/function.convert-cyr-string.php

答案 1 :(得分:0)

我特别不知道getDateLocale,但如果它使用系统的语言环境系统,则需要以适当的编码设置语言环境:

setlocale('en_US.UTF8');

向您的系统咨询您可用的语言环境以及采用的编码方式。

答案 2 :(得分:0)

始终表示在UTF-8环境中显示非UTF-8字符。您必须将getDateLocal()的输出更改为UTF-8,或者即时转换:

$dateLocalConverted = iconv("ISO-8859-5", "UTF-8", getDateLocal($lngstr['language']['date_format_full'], $i_rSet1->fields["startdate"]));
但是,这是一个肮脏的修复 - 最好找出getDateLocal()输出ISO-8859-5数据的原因,然后解决这个问题。