首页 > 后端开发 > 正文

什么是BOM头,及PHP解决办法

2024-12-14 11:36:27 | 我爱编程网

今天我爱编程网小编整理了什么是BOM头,及PHP解决办法相关信息,希望在这方面能够更好帮助到大家。

本文目录一览:

什么是BOM头,及PHP解决办法

什么是BOM头,及PHP解决办法

  • 类似WINDOWS自带的记事本等软件,在保存一个以UTF-8编码的文件时,会在文件开始的地方插入三个不可见的字符(0xEF 0xBB 0xBF,即BOM)。它是一串隐藏的字符,用于让记事本等编辑器识别这个文件是否以UTF-8编码。对于一般的文件,这样并不会产生什么麻烦。但对于 PHP来说,BOM是个大麻烦。

  • PHP并不会忽略BOM,所以在读取、包含或者引用这些文件时,会把BOM作为该文件开头正文的一部分。根据嵌入式语言的特点,这串字符将被直接执行(显示)出来。由此造成即使页面的 top padding 设置为0,也无法让整个网页紧贴浏览器顶部,因为在html一开头有这3个字符呢!
    我爱编程网

  • window编辑器如果保存为utf8文件就会帮你加上BOM头,以告诉其他编辑器以utf8来显示字符

  • 但是在网页上并不需要添加BOM头识别,因为网页上可以使用 head头 指定charset=utf8告诉浏览器用utf8来解释.但是你用window自动的编辑器,编辑,然后有显示在网页上这样就会显示出0xEF 0xBB 0xBF这3个字符。

  • 这样网页上就需要去除0xEF 0xBB 0xBF,可以使用editplus 选择不带BOM的编码,这样就可以去除了

php去除BOM头:

复制代码

function rmBOM($string)

{

if (substr($string, 0,3) == pack('CCC',0xef,0xbb,0xbf))

{

$string = substr($string, 3);

}

return $string;

}

什么是BOM头,及PHP解决办法

thinkphp echo回的页面如何去掉BOM头

echostr那个只是验证URL的,原样输出就可以了,还有,你可以用编辑器去除BOM头信息,不知道你的编辑器是那种的,可否告知,把index.php入口文件的BOM用编辑器清除一下,还望贴出代码,方面寻找问题所在

如何不让thinkphp ajaxReturn自动加BOM头

我爱编程网(https://www.52biancheng.com)小编还为大家带来如何不让thinkphp ajaxReturn自动加BOM头的相关内容。

菜单–修改–页面属性 或者ctrl+j打开页面属性窗口,点选“标题/编码”去掉“包括Unicode签名Bom”前的勾
有Bom的文件太多?这样太麻烦?当然有更好的方法!方法三:用php文件批量去除bom头 将以下这段代码保存为php文件,上传到服务器,用浏览器访问它!<?phpif (isset($_GET['dir'])){ //设置文件目录
$basedir=$_GET['dir'];}else{$basedir = '.';}$auto = 1;checkdir($basedir);
function checkdir($basedir){
if ($dh = opendir($basedir)) {
while (($file = readdir($dh)) !== false) {
if ($file != '.' && $file != '..'){
if (!is_dir($basedir./.$file)) {
echo filename: $basedir/$file .checkBOM($basedir/$file). ;}else{$dirname = $basedir./.$file;
checkdir($dirname);}}}closedir($dh);}}function checkBOM ($filename) {
global $auto;
$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) {
if ($auto == 1) {
$rest = substr($contents, 3);
rewrite ($filename, $rest);
return (<font color=redBOM found, automatically removed.</font);} else {return (<font color=redBOM found.</font);}}else return (BOM Not Found.);}function rewrite ($filename, $data) {
$filenum = fopen($filename, w);
flock($filenum, LOCK_EX);
fclose($filenum);}?还用记事本保存?那你真是智商捉急了!

以上,就是我爱编程网小编给大家带来的什么是BOM头,及PHP解决办法全部内容,希望对大家有所帮助!更多相关文章关注我爱编程网:www.52biancheng.com

免责声明:文章内容来自网络,如有侵权请及时联系删除。
标签: PHP
与“什么是BOM头,及PHP解决办法”相关推荐
java找不到符号的解决办法是什么
java找不到符号的解决办法是什么

java编程找不到符号说明代码中有中文字符,或者是括号不是对称的导致的,可以参考下以下入门代码://一个文件中只能有一个共有的类,并且与文件名称一致,大小写注意publicclassHelloWorld{//程序的入口publicstaticvoidmain(Stringargs[]){//向控制台输出信息System.out.println("欢迎java01班的同

2024-05-19 08:19:59
php程序员 hash碰撞原理是什么 怎么解决
php程序员 hash碰撞原理是什么 怎么解决

php程序员hash碰撞原理是什么怎么解决hash函数相当于,把原空间的一个数据集映射到另外一个空间或者可以理解为把一个原文通过hash函数编程另一个文本成为密文这就是hash加密比如md5任何原文都会被加密成8位或者16位密文8位16位密文是有穷的可以穷举而原文长度不限所以理论上是无穷的这就会出现两个或多个不同的原文md5加密后会变成相同的密文碰撞就是找出一个或多个加密后相同密文的原文

2024-09-14 23:33:46
怎么解决win10无法加载java插件 win10无法加载java插件解决方法【详细步骤】
怎么解决win10无法加载java插件 win10无法加载java插件解决方法【详细步骤】

win1064位系统IE11无法加载Java插件,弹窗点击后出现错误。已按网上方法调整多次均不成功!!!被jdk高版本安全性能阻止解决如下:1.安装jre8(保证控制面板有Java图标)2.安装jre7(jre6可有可无)3.卸载jre8注明:jre8生成图标,6或7不能生成,卸载jre8后,保留jre7仍然可以保留图标,再卸载jre7后图标消失。最后安全阻止消

2024-05-09 16:44:35
Thinkphp什么情况用下划线开头写方法
Thinkphp什么情况用下划线开头写方法

Thinkphp什么情况用下划线开头写方法方法的命名使用驼峰法,并且首字母小写或者使用下划线“_”,例如getUserName,_parseType,通常下划线开头的方法属于私有方法;属性的命名使用驼峰法,并且首字母小写或者使用下划线“_”,例如tableName、_instance,通常下划线开头的属性属于私有属性;以双下划线“__”打头的函数或方法作为魔法方法,例如__call和

2024-09-20 19:23:08
java无法在windows上运行,怎么解决?
java无法在windows上运行,怎么解决?

java无法在windows上运行,怎么解决?可能解决的办法:-硬核解决服务器安装forge失败-啊秋不是啊酋-使用“javafix.exe”进行自动修复-安装老版JavaRuntimeEnvironment(此方法对此类报错有效)-若是1.12.2Forge请安装JavaSE8-其他版本请自行查阅注意事项:一台计算机中可存在不同版本的J

2024-07-03 16:03:42
php mktime()警告怎么解决?
php mktime()警告怎么解决?

PHPgmmktime定义和用法PHP中的gmmktime()函数是一个用于获取格林威治标准时间(GMT)对应的UNIX时间戳的工具。它在功能上与mktime()函数相似,但返回的时间戳是基于格林威治时间的,不受夏令时(is_dst)影响,这是它与mktime()的主要区别。gmmktime()函数的参数定义如下:hour(可选),表示小时;minute(可选),规定分钟;second

2024-11-12 08:56:05
Python 问题怎么解决?
Python 问题怎么解决?

Python问题怎么解决?主要问题和解决方法如下:中文路径的问题:在D盘下保存一个名字为‘中文.txt‘的文件。运行如下测试代码:#-*-coding:utf-8-*-f=open('D:\\中文.txt','r')printf.read(),运行后可以正确打印中文。print打印中文的问题:在D盘下保存一个名字为‘中文.txt‘的文件。运行如下测试代码:#-*-cod

2023-12-23 08:29:01
filesize函数,求解析,该怎么解决
filesize函数,求解析,该怎么解决

filesize函数,求解析,该怎么解决intfilesize(stringfilename)返回文件大小的字节数,如果出错返回FALSE并生成一条E_WARNING级的错误。注:因为PHP的整数类型是有符号的,并且大多数平台使用32位整数,filesize()函数在碰到大于2GB的文件时可能会返回非预期的结果。对于2GB到4GB之间的文件通常可以使用sprintf("%u",fil

2024-12-27 02:49:12