V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
ivanlw
V2EX  ›  问与答

html保存成utf8无bom乱码?

  •  
  •   ivanlw · Dec 12, 2012 · 5485 views
    This topic created in 4893 days ago, the information mentioned may be changed or developed.
    特意查了下有/无bom是什么
    http://wenwen.soso.com/z/q118420256.htm

    发现无bom才应该是优先考虑的正常情况,但是用sublime 2存成无bom打开就是乱码,换成有bom就正常了……Mac平台

    是我理解错了吗?
    9 replies    1970-01-01 08:00:00 +08:00
    vampirekiss
        1
    vampirekiss  
       Dec 12, 2012
    我的 sublime 2 默认就是 utf-8 without bom 。 也没乱码. Mac平台
    timonwong
        2
    timonwong  
       Dec 12, 2012
    HTML5:
    meta charset="UTF-8"


    meta http-equiv="Content-Type" content="text/html; charset=utf-8"
    lianghai
        3
    lianghai  
       Dec 12, 2012
    你肯定搞错了些什么。
    zythum
        4
    zythum  
       Dec 12, 2012
    utf-8无bom
    有bom页面会出各种问题。
    ivanlw
        5
    ivanlw  
    OP
       Dec 12, 2012
    @timonwong 是要指定这句存成无bom才会生效么
    timonwong
        6
    timonwong  
       Dec 12, 2012
    @ivanlw
    HTML不能有BOM,UTF8 with BOM会多出3个BOM字节,可能会造成解析问题:
    http://www.w3.org/International/questions/qa-utf8-bom.en

    charset要显式声明,这个要么在服务器上做(HTTP协议的Content-Type头),要么就在页面中做(一般在页面中做,避免有HTML是其它charset的情况)。

    否则的话浏览器会猜测页面编码(或者直接使用系统当前代码页),造成的结果是不可预料的。
    90blog
        7
    90blog  
       Dec 12, 2012
    php会默认输出BOM这三个字符,导致乱码,所以php必须保存成无BOM
    http://www.90blog.org/archives/1504.html
    honk
        8
    honk  
       Dec 12, 2012
    ivanlw
        9
    ivanlw  
    OP
       Dec 17, 2012
    @timonwong
    嗯~自己做了最后的测试……
    1.包含<meta http-equiv="content-type" content="text/html; charset=UTF-8" />的文件,无论存成有bom无bom,现实中文都正常
    2.不包含charset声明的,存成无bom居然是乱码,存成有bom才会是正常的中文……

    第一点是按照您说的、正确的,肯定没问题了;但是第二点实在是太奇葩了……
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5180 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 59ms · UTC 01:08 · PVG 09:08 · LAX 18:08 · JFK 21:08
    ♥ Do have faith in what you're doing.