|
|
|
|
| 2006-09-12 | |||||||||||||
通过安装和修改了一下迷你日历,这个组件已经有点样子了,到这个组件主界面看一下,晕倒,有一点乱码,发现就在显示星期的位置。看看我怎么去调整它。
(以下过程均为我在自己服务器调度的过程,我的网站编码为UTF-8,所以我装这个组件所用的编码也是UTF-8,才会出现下面这个问题) 现在看上去,一切都很好,除了显示星期的位置为乱码外,现在来找找原因 首先我用了英文语言包试一下,正常没有乱码。我再把英文语言包的日期格式部分换到中文语言包文件中,同样出现问题。难道不是这里问题,忽然在语言包前面我看到这样的语句。 'locale' => array('en','english') 难道和这里有关系。不管3721,把中文的语言包中的区域也给它改成英语地区看看,呵呵,回到前台,有乱码的地方已经正常显示了,只不过显示的英文的星期,如果你不在意用英文星期的话,这样就可以了,将就着用一下。对于我英文不好,总觉得看到别扭,再找原因 。 看了一下程序,找到了和显示星期有关的一个函数,strftime(),这个函数是返回一个本地化格式的日期字符串,比较晕倒的是,它返加的是一个本地编码的字符串,也就是如果用 strftime("%A");的话,得到的是一个GB编码的“星期”,而不是我所要的UTF-8编码,为了验证一下这个结果,我把网页编码改成GB231,果然,那乱码的地方就是“星期..”正常显,其他地方,当然是乱码一片。好找到原因了现在看看怎么样解决他。 先google一下,看看网上有没有解决这个问题的方法,找了一圈一无所获,看来只有自己动手解决了。 忽然想到原来在台湾的joomla网上看到,很多人在问星期乱码的问题,看来和这个问题应该一样,下个台湾出的中方版joomla看看它是怎么解决的,终于在这个版本中发现解决的方法 if($mosConfig_lang== 'traditional_chinese' && function_exists('mb_convert_encoding')){ $date=mb_convert_encoding($date, "UTF-8", "BIG5"); 它是这样来解决星期问题的,但对于ExtCalendar组件中,有N多个(好象有45处)strftime()函数怎么办,我的办法是 替换一个自定义函数,函数名就叫stfr()吧,先找到所有的stfrtime(替换成stfr(再在ExtCalendar组件中的config.inc.php文件中写上我自己定义的函数: function strf($a,$b){ $a=mb_convert_encoding($a, "GBK", "UTF-8"); //想想看,这里为什么要将传入的格式先转化成gbk格式 $c=mb_convert_encoding(strftime($a,$b), "UTF-8", "GBK"); return $c; } 回到网页再看一下,哈哈一切OK,所有的都正常显示。 网友评论(4)
|
|||||||||||||
| 上一篇:ExtCalendar v2组件使用手记(四)加入阴历 | 下一篇:ExtCalendar v2组件使用手记(二)迷你日历捉虫记 |
|---|





通过安装和修改了一下迷你日历,这个组件已经有点样子了,到这个组件主界面看一下,晕倒,有一点乱码,发现就在显示星期的位置。看看我怎么去调整它。