转载 解决 #65279 隐形字符的问题
今天在CSDN看到一个php输出空白隐形字符65279的问题,在网上找了下,发下这个65279字符是php用来标记文件是utf-8编码的,输出的时候会一起输出到客户端,导致客户端如果使用ajax得到返回值时,无法匹配字符串。
php隐形字符65279解释如下:
UTF-8 编码的文件可以分为无 BOM 和 BOM 两种格式。
何谓BOM?
"EF BB BF" 这三个字节就叫BOM,全称是"Byte Order Mard"。在utf8文件中常用BOM来表明这个文件是UTF-8文件,而BOM的本意是在utf16中用。
utf-8文件在php中输出的时候bom是会被输出的,所以要在php中使用utf-8,必须要是使用不带bom头的utf-8文件。
常用的文本编辑软件对utf-8文件保存的支持方式并不一样,使用的时候要特别留意。
例如:
1、使用ultraedit时,另存时会有“UTF-8”和“UTF-8 - 无BOM”两种选择。
2、 window的记事本保存的是带bom的。
3、EditPlus软件不同版本对utf-8的保存支持不一样,例如:2.31版本保存的是不带bom的,2.11版本保存的是带bom的。
把utf-8文件头去掉的办法:
1、使用ultraedit另存,选择“UTF-8 - 无BOM”
2、一个很有用的php程序,放在站点根目录下运行,会把目录下全部utf-8文件的bom头去掉,代码如下:
?
//remove the utf-8 boms
//by magicbug at gmail dot com
if (isset($_GET['dir'])){ //config the basedir
$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")." <br>";
}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=red>BOM found, automatically removed.</font>");
} else {
return ("<font color=red>BOM found.</font>");
}
}
else return ("BOM Not Found.");
}
function rewrite ($filename, $data) {
$filenum = fopen($filename, "w");
flock($filenum, LOCK_EX);
fwrite($filenum, $data);
fclose($filenum);
}
转载 解决 #65279 隐形字符的问题相关推荐
- php隐形字符#65279;
php隐形字符解释如下: UTF-8 编码的文件可以分为无 BOM 和 BOM 两种格式. 何谓BOM? "EF BB BF" 这三个字节就叫BOM,全称是& ...
- 在php中使用mb_substr($row['title'],0,15,'utf-8')解决获取的字符后面几们的乱码问题
在php中使用mb_substr($row['title'],0,15,'utf-8')解决获取的字符后面几们的乱码问题. 要让自己在php方面有所造就,就得自己写实例,做项目.只有这样才能遇到问题, ...
- 解决html连续字符或数字换行的问题
解决html连续字符或数字换行的问题 参考文章: (1)解决html连续字符或数字换行的问题 (2)https://www.cnblogs.com/plBlog/p/11428177.html 备忘一 ...
- python sub 不区分大小写_解决Python列表字符不区分大小写的问题
有时候,我们需要检测一个元素是否已经存在列表中,并且不区分大小写,如:列表已有元素Mary,那我们想认为MARY也已经被占用.这个例子在实际编程中会用到很多,比如保证网站注册用户独一无二.邮件姓名独一 ...
- oracle的em能干什么,转载 解决Oracle的EM登录
转载 解决Oracle的EM登录 (2011-03-13 20:53:39) 标签: 杂谈 这几天解决了EM无法登录的问题,顺便也把j数据库程序中常出现的ORA_12518错误解决了,有必要总结一下, ...
- php 入库乱码,解决php 中文字符入库或显示乱码的简单示例
这篇文章主要为大家详细介绍了解决php 中文字符入库或显示乱码的简单示例,具有一定的参考价值,可以用来参考一下. 感兴趣的小伙伴,下面一起跟随512笔记的小编小韵来看看吧!大家以后在编写过程中, 一定 ...
- JavaScript奇技淫巧:隐形字符
JavaScript奇技淫巧:隐形字符 本文,分享一种奇特的JS编程技巧,功能是:可以使字符串"隐形".不可见! 效果展示 如下图所示,一个字符串经物别的操作之后,其长度有621字 ...
- [转载] 解决No module named xxx 问题
[转载] 解决No module named xxx 问题 作者:hustqb 文章:解决No module named ***问题 链接:https://blog.csdn.net/hustqb/a ...
- [转载]Word通配字符
[转载]Word通配字符 本文转自:https://www.cnblogs.com/pugongying123/p/8327674.html Word查找栏代码·通配符一览表 序号 清除使用通配符复选 ...
最新文章
- js的parseInt() map(),reduce()方法详解
- abap 在table control(表控件) 实现查找功能
- pl/sql中文显示为乱码解决
- 男朋友出的性格测试题
- 递归存储过程中使用cursor
- 微软反向 RDP 漏洞补丁不当,第三方 RDP 客户端易受攻击
- python3基础知识复习 -- 进程,线程,多任务讲解
- 计算机网络cs144之lab0
- EMM并不繁琐 ZBOX一体机轻松完成部署管理
- windowsMobile 注册表136个操作
- Linux系统下操作的常用快捷键
- Egret 使用Texture Merger制作美术字体
- Java 开源中文分词器Ansj 学习教程
- 突变检测软件 测试数据库,突变测试—通过一个简单的例子快速学习这种有趣的测试技术...
- Rust 常用 trait 实现
- P2P(1)P2P下载
- 【CCTC 2017】云计算核心技术与实践专场:剖析云计算关键技术,探寻金融、气象行业转型升级之路...
- 客户端开屏广告适配的一点经验
- verilog设计一个分,秒定时器电路:输入时钟1KHZ进行分秒计数
- linux常用命令——文件夹操作
热门文章
- 关于 chrome 谷歌浏览器 最小化后 页面被限制,不能运行的解决方案
- 应用 - gensim如何得到word2vec词向量
- 【射影几何03】中心射影和透视射影
- 电商系统延时任务机制源码分享
- CoreDNS:Kubernetes内部域名解析原理、弊端及优化方式
- ZYNQ学习笔记_GPIO之输入输出
- Launch screens may not set custom classnames
- [magick/magick_libMagickCore_la-animate.lo] Error 解决方案
- Java NIO框架
- 【K8S运维知识汇总】第4天7: dashboard小彩蛋–heapster