原文网址:https://www.youyong.top/article/1158d229b323
前段时间对接支付宝,支付宝回调我们用户支付结果,如果我们收到了回调,需要返回给支付宝"success",如果不返回"success",支付宝会在24小时内陆续回调我们8次。问题就出现在返回"success"上,程序中已经返回啦,log中也记录了"success",可支付宝还是回调了我们多次。线上咨询了支付宝技术客服,给的回复是,我们返回的数据中包含BOM头。
原文网址:https://www.youyong.top/article/1158d229b323
前段时间对接支付宝,支付宝回调我们用户支付结果,如果我们收到了回调,需要返回给支付宝"success",如果不返回"success",支付宝会在24小时内陆续回调我们8次。问题就出现在返回"success"上,程序中已经返回啦,log中也记录了"success",可支付宝还是回调了我们多次。线上咨询了支付宝技术客服,给的回复是,我们返回的数据中包含BOM头。
原文网址:https://www.youyong.top/article/1158d229b323
什么是bom头? bom全称是:byte order mark,汉语意思是标记字节顺序码。
BOM头是放在UTF-8编码的文件的头部的,占用三个字节,用来标识该文件属于UTF-8编码
常见的bom头有:
UTF-8 ║ EF BB BF
UTF-16LE ║ FF FE (小尾)
UTF-16BE ║ FE FF (大尾)
UTF-32LE ║ FF FE 00 00
UTF-32BE ║ 00 00 FE FF
对于一般的文件,这样并不会产生什么麻烦。但对于 PHP来说,BOM是个大麻烦。
PHP并不会忽略BOM,所以在读取、包含或者引用这些文件时,会把BOM作为该文件开头正文的一部分。根据嵌入式语言的特点,这串字符将被直接执行(显示)出来。由此造成某些页面顶部有一行空格或者像支付宝这样会多收到三个隐藏字符。
linux批量查找含bom头的php文件
[root@test06 test]# grep -r -I -l $'^\xEF\xBB\xBF' ./ | grep .php
./public/utf8bom3.php
./public/utf8bom2.php
[root@test06 test]# grep -r -I -l $'^\xEF\xBB\xBF' ./
./public/utf8bom.txt
./public/utf8bom3.php
./public/utf8bom2.php
批量删除
grep -r -I -l $'^\xEF\xBB\xBF' ./ | grep .php | xargs sed -i 's/\xEF\xBB\xBF//'
用PHP也可以去除文件BOM头
注:EF BB BF对应的十进制分别是 239,187,191
function remove_bom ($filename) {
$contents= file_get_contents($filename);
$charset[1] =substr($contents, 0, 1);
$charset[2] =substr($contents, 1, 1);
$charset[3] =substr($contents, 2, 1);
if(ord($charset[1]) == 239 && ord($charset[2]) == 187 &&ord($charset[3]) == 191) {
$rest= substr($contents, 3); //截取后重新写入文件即可
return;
}
}
作者声明:本篇文章系本人原创,欢迎分享,但未经许可,谢绝转载。
共 0 条留言
Linux php-fpm报错:allow_call_time_pass_reference
6款程序员必备的开源中文汉字拼音转换及处理工具 (PHP Java .net)
PHP Fatal error: Allowed memory size of bytes exhausted
改了php.ini中的open_basedir仍报错open_basedir restriction in effect
iPhone X 跌破发行价,苏宁200亿入股恒大 | 财经日日评
资深黄牛现身说法:iPhone X价格秒变不停,就像炒股一样
网站请求日志中的 article-expand tooltip_arrow article-contract 是什么
网络请求日志中的 apple-touch-icon.png 是什么?
又拍云上传图片503 put file capture error | put file to fs error
链接里的isappinstalled=0与isappinstalled=1有什么区别?|微信分享
手机扫一扫
分享文章