首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Coding
V2EX  ›  程序员

utf8 编码 PHP 文件 直接记事本修改 有可能会出现一些问题,为什么

  •  
  •   ouou8 · 232 天前 · 7267 次点击
    这是一个创建于 232 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有些时候,因为一些代码只需要简单修改几个字母,就懒得打开 sublime 或其他工具来修改了,就直接用记事本打开 utf8 编码的 php 文件 修改一下,然后保存的时候没有选择记事本另存为使用 utf8,而是直接 ctrl+s 直接保存一下,一些情况下是没有问题的,但是有时候却有问题,比如说会导致你程序的后台登陆验证码 无法显示,或者就算验证码能够显示,不过不管你怎么输入,这个验证码都是不正确的。 若去掉验证码,即是登录后台的时候,直接账号密码登录,屏蔽验证码这项,登录成功,其他功能也不受影响。

    为什么 代码正确的情况下,原是 utf8 编码的文件直接用记事本(记事本保存后可能变成 gbk ?或者带 bom 了?) 修改之后会或多或少影响一些东西呢?为什么会出现这种影响?

    代码正确,为什么编码却能影响,比如验证码挂掉。

    7 回复  |  直到 2019-04-28 08:58:24 +08:00
        1
    micookie   232 天前   ♥ 2
    BOM 头,在编辑器中是不可见,但是他的的确确是存在的。

    在返回 php 验证码的时候,原本输出的只是图片的二进制流

    但是因为 BOM 头的存在,会造成图片的二进制流前边存在 BOM 头

    浏览器无法识别 response,是一个正确的图片格式。
        2
    ouou8   232 天前
    @micookie 但若 php 文件原本就是 gbk 编码的,用记事本编辑却没事,这时直接编辑 不会带 bom 吗?
        3
    shiny   232 天前   ♥ 1
    @ouou8 BOM 头用来标记 UTF-8/UTF-16/UTF-32 的,GBK 没有这玩意儿。https://zh.wikipedia.org/wiki/%E4%BD%8D%E5%85%83%E7%B5%84%E9%A0%86%E5%BA%8F%E8%A8%98%E8%99%9F
        4
    crab   232 天前
    @ouou8 gbk 没 BOM 头啊
        5
    codehz   232 天前
    用 win10,可以选择无 bom
        6
    heybuddy   232 天前 via Android
    以前调腾讯的一个 sdk,里面的一个文件就有 BOM 头,害我调了半天
        7
    zyy314680012   231 天前 via Android
    notepad++好像可以
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   800 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 19ms · UTC 20:37 · PVG 04:37 · LAX 12:37 · JFK 15:37
    ♥ Do have faith in what you're doing.