现在的位置: 首页 > 综合 > 正文

又是诡异的编码问题

2012年11月16日 ⁄ 综合 ⁄ 共 783字 ⁄ 字号 评论关闭
  
    手上做一个用了spring framework, hibernate 的项目。今日,修改了一个hibernate 的mapping 文件,诡异的事情又来了: spring load 这个mapping文件的时候,总是报SAX错,说 document root element missing,还有DOCTYPE ELEMENT missing 的warning。我比了一遍又一遍(100遍啊100遍),怎么也看不出什么地方有问题:一个UTF-8的hbm.xml,而且是自动生成的,结构上也是对的,放在JBOSS上直接跑也没有问题,只有本地org.springframework.orm.hibernate.LocalSessionFactoryBean 去load的时候出事情

    开始怀疑是有全角空格,用emeditor看了,没有。郁闷之下,把所有的东西拷到notepad里面,把所有的注释,空格全部干掉,问题没了,再一行一行加回去,问题也没有了......难道是保存的encoding 不对???

    从cvs上找来commit的文件,用DF比了一下,发现文件头上有个诡异的字符......FT......原来是保存的时候钩了Unicode BOM选项,mapping 文件就匹配不了hibernate DTD了。

顺便找了一下有关BOM的东西,发现一个好文章:

http://dev.csdn.net/develop/article/69/69883.shtm

和作者fmddlmyy的blog,有不少关于encoding的好东西

http://blog.csdn.net/fmddlmyy/

虽然问题解决了,但是每次碰到encoding的东西还是头大。。。。。要是当年巴比伦的通天塔造好了就没这个问题了,咳。。。同时敬佩一下秦始皇,他肯定是转换encoding 烦了才统一文字的,这简直就是一定的!!

抱歉!评论已关闭.