Php smarty模板中的非拉丁字符显示;使用getDateLocal时
如何修复此错误?我正在使用smarty模板。以下是代码:Php smarty模板中的非拉丁字符显示;使用getDateLocal时,php,encoding,smarty,Php,Encoding,Smarty,如何修复此错误?我正在使用smarty模板。以下是代码: writeTR2($lngstr['page_visitordetails_startdate'], getDateLocal($lngstr['language']['date_format_full'], $i_rSet1->fields["startdate"])); 结果是���� 05, 2013 04:16:39 应该是这样的Мааτ052013 04:16:39 我的数据库和网站都使用UTF-8,在其他地方我没有这个
writeTR2($lngstr['page_visitordetails_startdate'], getDateLocal($lngstr['language']['date_format_full'], $i_rSet1->fields["startdate"]));
结果是���� 05, 2013 04:16:39
应该是这样的Мааτ052013 04:16:39
我的数据库和网站都使用UTF-8,在其他地方我没有这个问题,一切都很好。我是说西里尔文字表现得很好。但是当我使用这个函数getDateLocal时,有一个问题。当我将编码更改为西里尔文(ISO-8859-5)时
该功能显示我的性格,但整个网站显示不正确。
请帮帮我 尝试使用以下php函数:
convert_cyr_string ( string $str , string $from , string $to )
有关更多说明,请参阅。我不知道具体的
getDateLocale
,但如果它使用系统的区域设置系统,则需要以适当的编码设置区域设置:
setlocale('en_US.UTF8');
请咨询您的系统您有哪些可用的区域设置以及编码方式。� 始终指示在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数据的原因,并修复它。setlocale('ru_ru.UTF8')已经完成,但我只对特定的smarty函数getDateLocale有问题。在其他地方,setlocale工作正常。我找不到该函数的任何官方引用。它是做什么的?这是一个链接,它返回smarty Template中的完整日期我在我的系统中使用多语言,英语版本使用ISO-8859-1。如果我转换,一切都会转换,对吗?@Firdavs我不知道你说的“多语言”是什么意思?无论如何,iconv()
调用将只转换getDateLocal()内容。您肯定在输出端使用UTF-8