登录 注册

登录

问题 virtuemart1.12 订单列表 日期显示乱码解决方案

更多
2008年12月17日 13:21 #1 作者: eric2008
今日测试virtuemart商城 在查看订单列表时出现如下例:
          在月份位置显示为乱码,经过多种途径
  1修改商城日期格式
  2网上搜索相关话题
  3进入数据库查看相关数据表
  都无法解决该显示问题
最后我尝试进入virtuemart的文件目录,修改了\administrator\components\com_virtuemart\order.order_list.php文件的
相关字段解决了日期显示的问题。order.order_list.php文件中找到如下语句:
// Creation Date
$listObj->addCell( strftime("%d-%b-%y %H:%M", $db->f("cdate")));
// Last Modified Date
    $listObj->addCell( strftime("%d-%b-%y %H:%M", $db->f("mdate")));
其中的“%x”字段都是php语言对应的时间字段,出现乱码的就是“%b” 该字段的释义为:
%b - abbreviated month name according to the current locale (显示对应月份的名称缩写)
在中文的情况下不可避免会对月份缩写的翻译出现问题而导致系统无法正确显示月份字段。
我将“%b”替换成了“%m” 虽然显示的是数字月份1-12,但乱码的问题解决了,该日期的显示方式应该也能为广大网友接受:)
具体的更灵活适用的显示方式希望大家能进一步的探讨交流。

登录 或者   注册一个会员帐号 来参与讨论

更多
2008年12月17日 13:29 #2 作者: eric2008
如想在日期中显示中文 如2008年12月17日 可以修改成如下格式
// Creation Date
$listObj->addCell( strftime("%Y年-%m月-%d日 %H:%M", $db->f("cdate")));
// Last Modified Date
    $listObj->addCell( strftime("%Y年-%m月-%d日 %H:%M", $db->f("mdate")));
但在保存时要保存为utf-8编码 否则又会显示为乱码

登录 或者   注册一个会员帐号 来参与讨论

更多
2008年12月20日 16:46 #3 作者: anthax
前台问题一样,换成GB编码后正常

登录 或者   注册一个会员帐号 来参与讨论

更多
2008年12月20日 20:57 #4 作者: Joomla之门
看来 anthax 所用的模板是 gb2312 编码的。建议你转到 utf-8 编码,否则以后问题更多。

付费下载 Joomla 3 扩展汉化版: 我要付费支持 Joomla 之门!

登录 或者   注册一个会员帐号 来参与讨论

更多
2008年12月22日 09:34 #5 作者: anthax
不是,我是utf8的,我的意思是前台日期也出现乱码,把浏览器编码方式换到GB显示正常,我也在找原因

登录 或者   注册一个会员帐号 来参与讨论

更多
2008年12月22日 10:39 #6 作者: Joomla之门
如果 Joomla 的模板设置是 utf-8,而将浏览器设置到 GB 编码才能看到日期不乱码,就说明执行日期的那部分编码是 gb2312 的。

可能的原因:

1、日期定义可能是单独的 JS 或 php,该文件需要修改编码为 utf-8;

2、服务器本身已经定义了日期的输出方式,主机商预先设定为 gb2312 了。

付费下载 Joomla 3 扩展汉化版: 我要付费支持 Joomla 之门!

登录 或者   注册一个会员帐号 来参与讨论

更多
2008年12月22日 13:35 #7 作者: anthax
正是按照此思路做,可以排除第二种可能,问题有点像数据库格式问题

登录 或者   注册一个会员帐号 来参与讨论

更多
2008年12月22日 15:07 #8 作者: anthax
是UTC转GMZ的问题,windows服务器算时差不识别负数。真TMD

登录 或者   注册一个会员帐号 来参与讨论

更多
2010年02月23日 10:18 - 2010年02月23日 15:13 #9 作者: branky
这个问题基本明朗了,年月日的显示好解决,找到相应文件修改即可,就剩下星期几的显示仍不会弄?

由于订单详情页面的日期包含星期,暂时还不能这么改,因为代码在\components\com_virtuemart\themes\default\templates\pages的account.order_details.tpl.php文件里,显示代码为

<?php echo $VM_LANG->_('PHPSHOP_ORDER_PRINT_PO_DATE') ?>
<?php echo vmFormatDate($db->f("cdate")+$time_offset); ?>

但是,我意外在数据库的vm_vendor表里的vendor_date_format字段发现了显示代码,其中%A显示为星期几,主要是它导致乱码,于是我索性去掉了星期,只保留年月日,问题得解。

不知哪位大侠可有能正常显示星期的方法?

登录 或者   注册一个会员帐号 来参与讨论