刚开始做网页的时候,mysql里面我用的全部都是gbk,然后网页里面也都是gb2312。文件的格式都是ANSI的,就这样,一直都很顺,也没出过什么问题直到前两天,我忍不住了,看到大家都劝说要使用utf8,这样可以免得某些文字显示不出来于是乎我来了个整体大转换,数据库里面统一换成了utf-general-ci...这样,数据库里面的数据倒也没出什么问题。
然后就是把php文件里面的数据库语句也统一了一下用set names utf8,网页头部也换成了utf-8。所有的php文件也换成了utf8编码。
于是噩梦开始了
        先是session文件提示一个错误,然后google了一下,说是utf8文件会在前面文件头包含一个bom头,用ultraedit可以删除。我就删除了。然后我在看看网页文件里面中文统统乱码,没事,我不怕,小作品,文件不错,我一个一个都改好了,然后看一下表现怎么样。嘿,正常,高高兴兴的准备继续做,突然在我用DW编辑一段代码后再次预览,又乱码了,嘿,我郁闷了,于是乎又google,发现是DW的编码没设置好,我又设置好了编码,现在问题总算是解决了。但是我现在仍然没有搞清楚里面到底是什么关系。究竟utf8带bom的那个头对网页有没有影响。有的时候网页会莫名多出来一空行。按照网上一个人说的用写字板打开然后定位到开头,先回车,再退格,是能解决问题。但是总这样不是个办法吧。有没有什么统一的解决方法?
        希望达人能给解释下,究竟我们在这些方面要注意些什么

解决方案 »

  1.   

    你创建文件的时候就是用utf-8无bom格式就可以了
      

  2.   

    我一般创建文件都是复制之前的文件然后进去删除。但是我发现有的时候经过DW编辑的文件会变,这是为什么呢?还有就是如果我选择无签名的话,在Dw里面还有个选项就是Unicode标准化表单,里面有五个选项,
    这个该选择无,C,D,KC,KD中哪一个才能标准。
      

  3.   

    bom也就是utf8有标签的文件,session_start()你也知道,在它之前不能有任何的输出,得把这位老大放最前面,而那个bom很可恶的就先输出了,没办法,肯定报错啊,我当初因为这个问题也纠结了2天而且建议楼主什么编译器啊,开发工具啊默认编码格式都设置成为utf8格式的,这样的话才不会在你打开的时候出现乱码,或者修改完了之后出现乱码,平时最好不要用记事本,下个编译器可以显示有无bom的,比如EmEditor还有什么问题?
      

  4.   

    我没有用过DW写动态页面,notepad++,zendstudio,NetBeans都可以生成utf8无bom格式的文件
      

  5.   

    嗯,我试试换下工具。我只是觉得DW写html挺习惯的。。
      

  6.   

    有用zend,但是我公司的机器配置不行,所以会卡,很慢,声明zend占内存我现在在用eclipse,还有EmEditor就没有了
      

  7.   

    zend有提示,不过就是因为这点偶毅然决然的不用了
    偶还是菜鸟,宁愿出错改也要自己写,等到以后熟悉了,再用有提示的来提高速度
      

  8.   

    我发现记事本问题很大。是凡原来好好的代码用记事本一修改,就会前面多出来东西。比如有的时候网页会多出一行,session文件提示前面不能有输出。。
      

  9.   

    是啊。好的编辑器是好的程序员开始。Zend Studio - 7.2.0很好用。建议你学习一下。
      

  10.   

    搞web开发的比较麻烦的就是编码问题了
      

  11.   

    我用emacs, 记事本也是带bom的
      

  12.   

    直接ctrl+j把编码选为UTF-8,去掉BOM的选择。其他的都不管,默认是什么就是什么。就可以了。
    BOM头会影响很多东西,由于一开始就有东西输出了,首先影响的就是header和session了。
    如果你的网页用了压缩输出,他对于有的压缩方式也会产生影响,导致浏览器始终都提示你是错误的压缩格式。
    做UTF-8的页面,所以最好不要加BOM头到文件。