非常时期,评论必须审核之后才能显示,给你造成不便,请见谅!
该日志由 Kevin 发表于 2007, July 2, 12:00 AM
这一个星期来,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,感觉他不做这行真是浪费人才!
2007, July 2, 3:55 AM
2007, July 2, 8:36 AM
2007, July 2, 11:42 PM
不过,换一种新东西,会发现一些很好玩的,有时候有会一种成就感的。呵呵。
2007, July 2, 11:59 PM
2007, October 17, 4:23 AM
不过你博客里面好多东西,可以学习一下
2007, October 17, 11:05 PM