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

2019-04-27 17:11:28 +08:00
 ouou8

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

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

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

8466 次点击
所在节点    程序员
7 条回复
micookie
2019-04-27 17:21:23 +08:00
BOM 头,在编辑器中是不可见,但是他的的确确是存在的。

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

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

浏览器无法识别 response,是一个正确的图片格式。
ouou8
2019-04-27 17:30:30 +08:00
@micookie 但若 php 文件原本就是 gbk 编码的,用记事本编辑却没事,这时直接编辑 不会带 bom 吗?
shiny
2019-04-27 17:32:33 +08:00
@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
crab
2019-04-27 17:36:12 +08:00
@ouou8 gbk 没 BOM 头啊
codehz
2019-04-27 17:39:09 +08:00
用 win10,可以选择无 bom
heybuddy
2019-04-27 23:00:04 +08:00
以前调腾讯的一个 sdk,里面的一个文件就有 BOM 头,害我调了半天
zyy314680012
2019-04-28 08:58:24 +08:00
notepad++好像可以

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/559228

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX