有些时候,因为一些代码只需要简单修改几个字母,就懒得打开 sublime 或其他工具来修改了,就直接用记事本打开 utf8 编码的 php 文件 修改一下,然后保存的时候没有选择记事本另存为使用 utf8,而是直接 ctrl+s 直接保存一下,一些情况下是没有问题的,但是有时候却有问题,比如说会导致你程序的后台登陆验证码 无法显示,或者就算验证码能够显示,不过不管你怎么输入,这个验证码都是不正确的。 若去掉验证码,即是登录后台的时候,直接账号密码登录,屏蔽验证码这项,登录成功,其他功能也不受影响。
为什么 代码正确的情况下,原是 utf8 编码的文件直接用记事本(记事本保存后可能变成 gbk ?或者带 bom 了?) 修改之后会或多或少影响一些东西呢?为什么会出现这种影响?
代码正确,为什么编码却能影响,比如验证码挂掉。
1
micookie 2019-04-27 17:21:23 +08:00 2
BOM 头,在编辑器中是不可见,但是他的的确确是存在的。
在返回 php 验证码的时候,原本输出的只是图片的二进制流 但是因为 BOM 头的存在,会造成图片的二进制流前边存在 BOM 头 浏览器无法识别 response,是一个正确的图片格式。 |
3
shiny 2019-04-27 17:32:33 +08:00 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
|
5
codehz 2019-04-27 17:39:09 +08:00
用 win10,可以选择无 bom
|
6
heybuddy 2019-04-27 23:00:04 +08:00 via Android
以前调腾讯的一个 sdk,里面的一个文件就有 BOM 头,害我调了半天
|
7
zyy314680012 2019-04-28 08:58:24 +08:00 via Android
notepad++好像可以
|