终于解决了SaBlog附件的问题了,真爽!

July 2nd, 2007 / 求知·技术新知 / 7 条评论

这一个星期来,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 条评论

  1. 谢谢了~~ 谢谢了~~ Says:
    November 18th, 2008 at 02:50 am

    我也遇到这个问题了,我在本机调试它却是可以显示的,上传到空间上后却不行。。。

    现在终于解决了,谢谢了!

  2. Kevin Kevin Says:
    October 17th, 2007 at 11:05 pm

    刚好发现原来我还漏了一个,少弄了一个标签[code]

  3. 阿波 Says:
    October 17th, 2007 at 04:23 am

    这个问题倒没有碰到过,不过好久没看sa的代码了,根本没什么时间。

    不过你博客里面好多东西,可以学习一下

  4. Kevin Kevin Says:
    July 2nd, 2007 at 11:59 pm

    冰雨MM,MM太晚睡是要变熊猫的,难道你变牛以后还要变熊猫?嘿嘿!

  5. 缘心 Says:
    July 2nd, 2007 at 11:42 pm

    亏你的心情去折腾这些东西,我现在连发BLOG的时间都想懒下来了。呵呵。。。天天忙的屁颠屁颠的。

    不过,换一种新东西,会发现一些很好玩的,有时候有会一种成就感的。呵呵。

  6. Kevin Kevin Says:
    July 2nd, 2007 at 08:36 am

    有可能,但是不能确定,不过平时用其它程序也经常会用记事本编辑的啊!

  7. angel Says:
    July 2nd, 2007 at 03:55 am

    难道你用记事本修改过文件?

对此有看法?发表一下评论吧!