[英]Non-latin characters in smarty template showing ���� while using getDateLocal
如何解决此错误? 我正在使用smarty模板。 这是代码:
writeTR2($lngstr['page_visitordetails_startdate'], getDateLocal($lngstr['language']['date_format_full'], $i_rSet1->fields["startdate"]));
结果是 05,2013 04:16:39应该像这样Март05,2013 04:16:39
我的数据库和网站都使用UTF-8,在其他地方我没有这个问题,一切都很好。 我的意思是西里尔字母显示的很好。 但是当我使用此函数getDateLocal时出现问题。 当我将编码更改为西里尔字母(ISO-8859-5)时,该功能向我显示字符,但整个站点显示不正确。 请帮帮我。
尝试使用以下php函数:
convert_cyr_string ( string $str , string $from , string $to )
有关更多说明,请参考http://php.net/manual/zh/function.convert-cyr-string.php 。
我不特别了解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数据并进行修复。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.