9月 12 2006
 
打印 E-mail
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)
1星期顯示的問題 游客 在 2006-12-16 01:13:45 发表
Dear大大...我研究這篇文章很久,還是沒辦法看懂 
有問題還請大大幫個忙 
我用了繁體中文化之後 
我的行事曆右上角顯示的形式是2006/12/16/W6 
到預設的佈景去看,發現他是呼叫一個$date的變數 
可是我不知道怎樣修改才會變成像大大的行事曆般 
顯示成2006年 12月 16日 星期六的格式 
 
大大說ExtCalendar组件中,有N多个(好象有45处) 
是指extcalendar.php這個檔案嗎? 
我的只有18處耶 
整個感覺都怪怪的
2 游客 在 2006-12-16 01:27:42 发表
Dear大大,我按照您的方式修改 
出現Call to undefined function: mb_convert_encoding() 
這樣的錯誤訊息 
請問該怎麼辦?
3 blank 在 2006-12-23 18:43:13 发表
今天才看到, :p  
不是指一个文件 
相关的所有文件都要改的 
mb_convert_encoding() 这个好象是一个php的扩展,没有包含在默认的php中 
4 游客 在 2006-12-24 20:28:43 发表
真慘....我是個PHP門外漢,主機也沒有支援mb_convert_encoding() 這個函數,請問大大有別的方法可以達成嗎? 
 
看來真的要好好的去學一學PHP+Mysql的課程

姓名:
电子邮件
主页
标题:
BBCode:Web AddressEmail AddressBold TextItalic TextUnderlined TextQuoteCodeOpen ListList ItemClose List
评论:


验证码:* Code

 
上一篇:ExtCalendar v2组件使用手记(四)加入阴历   下一篇:ExtCalendar v2组件使用手记(二)迷你日历捉虫记