今天收到一封信件,是说西部e网(weste.net)的RSS显示的问题的。一直用Windows操作系统和IE浏览器,竟然没有发现这些错误,实在是惭愧。
以下是那位热心朋友Li Qihong的的邮件内容:
我是一名Linux下的用户,我订阅了贵站的RSS。大概从五月中旬开始,贵站的RSS就出现了一些小问题,主要如下:
1. 发送的日期永远是1970年,这个问题大概是今年的5月16日开始的,使得我无法按日期排列;
2. 大概是从上个月开始,贵站的RSS的详细内容在浏览时都变成了一行一个字,阅读起来非常麻烦,这个问题在Window下的Firefox浏览器中也存在。
我看RSS的工具是ThunderBird 2.0.0.0,操作平台是FC4。
希望能在百忙之中能够解决这两个问题,谢谢!
其实这两个问题解决起来非常简单,一共花了我10分钟时间。下面就说一下为什么会出现这样的问题:
1、RSS日期的问题
严格来说,RSS的时间应该为GMT时间(符合RFC822标准),但是一些Windows系统下RSS阅读器其实并不在乎这个,只要是正确的时间格式就行。我用过一次ThunderBird,只是收信而已所以根本没发现这个问题。Foxmail下面都是好的。
解决的方法:将2007-09-19 14:50:33这样的格式转换成了GMT时间Wes, 19 Sep 2007 14:50:33 +0800。这样在ThunderBird下显示就正常了。
RFC822标准是为“美国国防部高级研究计划署”制定的文本信息(邮件传输)格式标准。
其中对日期格式是这样定义的:
date-time = [ day "," ] date time ; dd mm yy
; hh:mm:ss zzz
day = "Mon" / "Tue" / "Wed" / "Thu"
/ "Fri" / "Sat" / "Sun"
date = 1*2DIGIT month 2DIGIT ; day month year
; e.g. 20 Jun 82
month = "Jan" / "Feb" / "Mar" / "Apr"
/ "May" / "Jun" / "Jul" / "Aug"
/ "Sep" / "Oct" / "Nov" / "Dec"
time = hour zone ; ANSI and Military
hour = 2DIGIT ":" 2DIGIT [":" 2DIGIT]
; 00:00:00 - 23:59:59
zone = "UT" / "GMT" ; Universal Time
; North American : UT
/ "EST" / "EDT" ; Eastern: - 5/ - 4
/ "CST" / "CDT" ; Central: - 6/ - 5
/ "MST" / "MDT" ; Mountain: - 7/ - 6
/ "PST" / "PDT" ; Pacific: - 8/ - 7
/ 1ALPHA ; Military: Z = UT;
; A:-1; (J not used)
; M:-12; N:+1; Y:+12
/ ( ("+" / "-") 4DIGIT ) ; Local differential
; hours+min. (HHMM)
还是比较复杂的,网上peace.zhou曾经写了一段转换程序,用起来还是不错的:
'*************************************
'Coded By hooline 2006.9.8
'Email:hooline#gmail.com
'Msn:peace.zhou#msn.com
'功能:Asp转换时间为GMT(RFC822)格式时间函数
'**************************************
Function DateTimeToGMT(sDate)
Dim dWeek,dMonth
Dim strZero,strZone
strZero="00"
strZone="+0800"
dWeek=Array("Sun","Mon","Tue","Wes","Thu","Fri","Sat")
dMonth=Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec")
DateTimeToGMT = dWeek(WeekDay(sDate)-1)&", "&Right(strZero&Day(sDate),2)&" "&dMonth(Month(sDate)-1)&" "&Year(sDate)&" "&Right(strZero&Hour(sDate),2)&":"&Right(strZero&Minute(sDate),2)&":"&Right(strZero&Second(sDate),2)&" "&strZone
End Function
2、在Firefox下浏览文章时都变成了一行一个字
这个问题就是CSS兼容的问题了!
为了保证文章强制折行,我在css中使用了“table-layout:fixed”。正是这个出现了问题,尤其在百分比的宽度下。去掉“table-layout:fixed”就好了。但是怎么样才能解决既适应IE又适应Firefox的折行呢?麻烦呀!