终于解决了SaBlog附件的问题了,真爽!
这一个星期来,SaBlog的附件问题一直搞得我很心烦,该试的都试了,该问的也问了,虽然Sablog的作者对这个无厘头的问题也摸不着头脑,但是也是要感谢他帮助,还有沙滩...
最后,偶然的跟一位死党说起这个问题,虽然他打算通宵写他的软件,但是我说了以后他还是放下手头的工作帮我测试,很快,本来让人摸不到头脑的问题终于有了方向了,现在问题解决了,但是导致错误的原因还不是太清楚,真汗!
其实解决问题的方案很简单,就是把config.php文件从UTF-8转成ASCII格式,include或require一个UTF-8格式文件,会把UTF-8文件的标记一同引入,所以显示图片的时候多了三个UTF-8格式标记 ,按死党的提示,找到以下资料:
[code]
在UCS编码中有一个叫做"ZERO WIDTH NO-BREAK SPACE"的字符,它的编码是FEFF。而FFFE在UCS中是不存在的字符,所以不应该出现在实际传输中。UCS规范建议我们在传输字节流前,先传输字符"ZERO WIDTH NO-BREAK SPACE"。
这样如果接收者收到FEFF,就表明这个字节流是Big-Endian的;如果收到FFFE,就表明这个字节流是Little-Endian的。因此字符"ZERO WIDTH NO-BREAK SPACE"又被称作BOM。
UTF-8不需要BOM来表明字节顺序,但可以用BOM来表明编码方式。字符"ZERO WIDTH NO-BREAK SPACE"的UTF-8编码是EF BB BF(读者可以用我们前面介绍的编码方法验证一下)。所以如果接收者收到以EF BB BF开头的字节流,就知道这是UTF-8编码了。
Unicode:FF FE
Unicode big_endian:EF FF
UTF-8: EF BB BF
GB2312是高位在前,Big_endian
下面的方式可以得到字符串内码
char chs[]=mystr.toCharArray();
StringBuffer sb=new StringBuffer();
for(int i = 0; i < chs.length; i++){
sb.append(chs[i] + " = " + (int)chs[i]+" ");
}
System.out.println(sb.toString());
[/code]
不过我到现在还是不明白,为什么没有其它Sablog的用户出现我这样的情况?真够黑的,这种问题也让我遇到,汗死自己了!
PS:感谢所有帮我测试的人,Angel,沙滩,当然还有死党Samson,感觉他不做这行真是浪费人才!
7 条评论
November 18th, 2008 at 02:50 am
我也遇到这个问题了,我在本机调试它却是可以显示的,上传到空间上后却不行。。。
现在终于解决了,谢谢了!
October 17th, 2007 at 11:05 pm
刚好发现原来我还漏了一个,少弄了一个标签[code]
October 17th, 2007 at 04:23 am
这个问题倒没有碰到过,不过好久没看sa的代码了,根本没什么时间。
不过你博客里面好多东西,可以学习一下
July 2nd, 2007 at 11:59 pm
冰雨MM,MM太晚睡是要变熊猫的,难道你变牛以后还要变熊猫?嘿嘿!
July 2nd, 2007 at 11:42 pm
亏你的心情去折腾这些东西,我现在连发BLOG的时间都想懒下来了。呵呵。。。天天忙的屁颠屁颠的。
不过,换一种新东西,会发现一些很好玩的,有时候有会一种成就感的。呵呵。
July 2nd, 2007 at 08:36 am
有可能,但是不能确定,不过平时用其它程序也经常会用记事本编辑的啊!
July 2nd, 2007 at 03:55 am
难道你用记事本修改过文件?
对此有看法?发表一下评论吧!