开启左侧

非法字符 原因 以及解决办法

  [复制链接]
65004 115
cx 发表于 2017-11-21 21:37:41 | 只看该作者 |阅读模式 打印 上一主题 下一主题
模板文件生成html文件之后会在body开头处加入一个可见的控制符,导致页面头部会出现一个空白行。原因是页面的编码是UTF-8 + BOM。  
/ C; l( P9 h% k) o( B- s, A% I; p  w- B+ g
这种编码方式一般会在windows操作系统中出现,比如WINDOWS自带的记事本等软件,在保存一个以UTF-8编码的文件时,会在文件开始的地方插入三个不可见的字符(0xEF 0xBB 0xBF,即BOM)。# ~3 w+ V1 {, M* a$ t& K

! r3 L$ L7 }5 s' i( ]! J它是一串隐藏的字符,用于让记事本等编辑器识别这个文件是否以UTF-8编码。# n) l& o5 T7 D9 C: @

' B* i/ v1 S) B/ G对于一般的文件,这样并不会产生什么麻烦。9 P7 W; E4 b1 s

- w# Z/ l6 E/ b但对于 PHP来说,BOM是个大麻烦。因为PHP并不会忽略BOM,所以在读取、包含或者引用这些文件时,会把BOM作为该文件开头正文的一部分。
9 `: D; c6 m) t; m: u4 ^+ t  B& L
" a) _# W9 M9 O2 U+ [, g8 S/ W" t! P根据嵌入式语言的特点,这串字符将被直接执行(显示)出来。% y; e% r) ^3 A; U# P: t
( ]6 Y# O+ W& S: k( Y
由此造成即使页面的 top padding 设置为0,也无法让整个网页紧贴浏览器顶部,因为在html一开头有这3个隐藏字符!+ @& [3 D2 z$ Q- @. D# l  i

5 \6 o- H$ V2 i0 @, h1 N直接notopad++ 保存为无dom格式 (格式-》转为UTF-8 无dom格式)   7 A1 ~; R" ~* d" K

1 ~) _5 `8 w5 s7 g: [8 c) P然而文件比较多,又想偷懒下,使用下列方法来实现。  ) N4 b( H: ?# s1 f
( X+ d6 v) d% L( O
将一下代码保存为a.php文件放到根目录下,执行一下,即可自动完成转换
& q9 L+ o1 p6 i8 ]0 c
; L' A9 B: n8 q+ X' N& L" r3 J# v8 [( r$ U
  1. <?php
    * Z/ ?, R1 k  j3 b; ]3 c! w: ]
  2. // 设定你要清除BOM的根目录(会自动扫描所有子目录和文件)) w2 j" R" X7 K/ L( {8 L/ ]
  3. $HOME = dirname(__FILE__);* B! ^7 P% v% w
  4. // 如果是Windows系统,修改为:$WIN = 1;! q2 ~! k( @/ f' j
  5. $WIN = 0;! U% R# o. B7 ~) }! o
  6. ?>3 c6 C3 x. A+ f& M: r* u" |
  7. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">( ^) ~1 h, |$ @3 o0 d# q1 Y% ]
  8. <html xmlns="http://www.w3.org/1999/xhtml">
    3 L3 |' \6 d1 [# U, l1 [
  9. <head>7 z" r( X5 r2 y5 l4 g
  10. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    6 Z" L* x, n  O" R0 r: p9 x* ~
  11. <title>UTF8 BOM 清除器</title>1 M3 ^% j; U' A( Z4 M
  12. <style>. m- m1 L! i3 q+ x- B5 h
  13. body { font-size: 10px; font-family: Arial, Helvetica, sans-serif; background: #FFF; color: #000; }4 g6 t8 l' A" m7 F4 j3 _! B8 ], }
  14. .FOUND { color: #F30; font-size: 14px; font-weight: bold; }
    ! b- i6 d8 s: X6 O: s. _8 s
  15. </style>) `2 F7 C& ~1 A: X) \! b$ n- Q) |
  16. </head>
    , N! Y( t1 G* p; I2 p" D
  17. <body>5 F5 R* ?# T" `0 B- H
  18. <?php
    3 h; S5 m! @. C( U0 I6 E
  19. $BOMBED = array();7 ?1 x) a! y2 R8 U( l
  20. RecursiveFolder($HOME);
    , g6 L( J( q+ f: o' y1 t
  21. echo '<h2>These files had UTF8 BOM, but i cleaned them:</h2><p class="FOUND">';1 V  q! J- `% }9 M
  22. foreach ($BOMBED as $utf) { echo $utf ."<br />\n"; }
    % ]# s0 T( z% [6 h! [
  23. echo '</p>';% U0 `7 z4 ^$ [' |; B$ }
  24. // 递归扫描
    : j1 q- S! J& _8 v' e# S' R  r
  25. function RecursiveFolder($sHOME) {
    - ^6 k$ J7 C  ~; V
  26. global $BOMBED, $WIN;
    ; S# T7 X2 {( ]- h$ F
  27. $win32 = ($WIN == 1) ? "\" : "/";9 b: Q. p/ M: F' X3 i
  28. $folder = dir($sHOME);, {% y+ r' K  b2 ?
  29. $foundfolders = array();
      t* T" p0 i0 [% V$ [# L" f
  30. while ($file = $folder->read()) {7 b: `: R3 T% ~5 C2 T5 g; S
  31.   if($file != "." and $file != "..") {
    & H: p1 k, ?9 Y. _! w: e, e
  32.    if(filetype($sHOME . $win32 . $file) == "dir"){
    % n$ ~/ y. g2 m, k; Z
  33.     $foundfolders[count($foundfolders)] = $sHOME . $win32 . $file;; g6 @- h$ Q5 B8 b. f$ R- b
  34.    } else {, K9 `" V+ S( n& E: [& G9 K
  35.     $content = file_get_contents($sHOME . $win32 . $file);+ g$ v% P9 m- |& j5 }7 s$ Y
  36.     $BOM = SearchBOM($content);
    7 N% t6 |! _% p/ i
  37.     if ($BOM) {
    : e, N: `& G: H
  38.      $BOMBED[count($BOMBED)] = $sHOME . $win32 . $file;* p9 m7 F" e8 D( q
  39.      // 移出BOM信息
    + P0 F# F1 v, X  _7 q, p" K
  40.      $content = substr($content,3);# k+ G$ a7 Q0 ?6 N: N2 T- n0 `& L0 Q/ ?, H
  41.      // 写回到原始文件/ O+ \. ?& n9 h5 p
  42.      file_put_contents($sHOME . $win32 . $file, $content);
    # j  O* p6 y5 K% W# M
  43.     }7 g! T8 E( z, `8 V+ E, {8 ^2 e) ]
  44.    }9 B" h1 g/ @8 v9 b  w
  45.   }$ B6 f3 w  M, |0 n* x/ C
  46. }  Y3 i5 o$ n1 o5 {( T9 h* X
  47. $folder->close();
    * f( m+ d  v5 R7 _* {
  48. if(count($foundfolders) > 0) {
    1 `9 d  ?3 ?" @% ^+ B2 t
  49.   foreach ($foundfolders as $folder) {
    $ b  t) S/ S2 S  g  s8 X. X5 s8 n
  50.    RecursiveFolder($folder, $win32);
    8 s1 c- r' G/ t. ]9 W6 G+ Q$ M
  51.   }- ]& |- x3 C4 x9 T1 f
  52. }2 d7 m  C$ Z- h$ X- F8 k" B
  53. }
    7 @+ \: z( Z* {# c* S' w
  54. // 搜索当前文件是否有BOM4 V1 w; E  b+ P, Y
  55. function SearchBOM($string) { & h( j# R. q% u( Y
  56.   if(substr($string,0,3) == pack("CCC",0xef,0xbb,0xbf)) return true;
    ) x' ]7 f$ o: Q. A- }% T' N
  57.   return false;
    : K  M$ I3 F  |5 M; T
  58. }
    ' k' A- d4 |7 [) m
  59. ?>7 c6 U1 [& y  q3 f  Y- ^$ _
  60. </body>. x' d0 v5 G% Y- y. @- s
  61. </html>
复制代码
这个管理员我已经测试过,确实好用的!!!如果懒得去制作文件,就下这个附件吧。用完再删除即可!2 J$ S) ^7 ?, j4 g. N6 k
: `, K) q3 M9 u& t; _

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
收藏
收藏0
分享
淘帖0
支持
支持0
反对
反对0
回复

使用道具 举报

精彩评论115

跳转到指定楼层
117#
李婉卿 发表于 2018-3-3 11:16:12 | 只看该作者
楼主,太爱你了。5 d* {8 ]- ~' Z3 O9 Q6 I% `

+ w, v1 K5 x: M7 Q" H+ O# X2 V, r3 c/ T1 L1 v. r. Z( d$ s. c' ^; M( p
+ J# U  G# h7 Q2 f3 d# l$ R
) C1 Z8 ^- g2 s2 \& b( W
5 \* c7 @2 D1 j& F; u/ \

+ A& X- ]+ N+ u3 K  z
, ^4 E( y/ M' r0 g' r2 l
' R' C1 Z- r: A6 t- w9 i( T
; q; t* K' j! z5 V0 q- X2 X9 }$ G5 T2 I& d. @. _7 |
2 a8 [2 D. s9 k1 T

9 W' b& ?$ K* H% [时势造英雄!承和堂顺势而出与沸点教育达成百万战略合作
$ i9 A4 I! l2 _  R
2018223日,大年初八这一天,当所有人还在返程的路上或沉浸在新年的喜悦中时,承和堂已快速出击与沸点教育签订2018年发展大计——百万战略合作签约!
. L. f) n, F5 P7 W' s# z6 w9 }) k9 X
$ L7 k1 I8 g% @6 A. W0 F! L
; w7 S& h# C* }7 `% r+ q+ o2 v

0 k; x$ d; m5 V! R% D  O【沸点教育】真正是站在行业高度的第三方教育平台,旨在通过打造微商领袖人才,促进微商品牌的自我进化,从而促进微商行业的规范化发展,是国内唯一一个非营利性目标的微商专业教育平台,被誉为“微商行业中的黄埔军校”!公司口号:让天下没有难做的微商
) A9 v0 D- Q$ E: p" _) k7 y0 l$ J沸点教育创始人李婉卿老师更是被人冠以裂变女王!
$ V! G" [5 v6 L1 f

. P2 [" N' x9 H+ h* L- b! I3 c中国传统医药文化源远流长,经久传颂的神医名号,续写着祖辈的传奇,扁鹊,淳于意,张仲景,华佗,皇甫谧,葛洪,孙思邈,钱乙,宋慈,李时珍等…诸多神医,承载了一个民族对救死扶伤的本能崇拜。
8 u: o; l  o& j$ Z3 v
# |: ^1 ~* {8 K* `/ }
3 \3 \3 ^# e8 H5 ^' Z9 \2 R
承和堂膏药,传承千年医药理念,仁心仁德,悬壶济世,药方历史已有两千多年。汉高祖刘邦起兵时,多为军队治愈伤病烦恼,后军师张良为刘邦觅得一药膏,史书载为:良献良膏,兵使兵健,药效极佳。而后刘邦逐鹿中原,一统天下,汉高祖刘邦广施仁政,自知黎民百姓饱受疾苦,特号令天下大兴农业医药等...使得古代十大名医多位来自汉朝时期。历史更迭,时代变迁,但后人一直秉承“医者仁心苏万物,悬壶济世救众生”的祖训,故而此药方得以传承千年。7 K% J. u5 e8 p( Y; H3 N
现汉高祖刘邦第74代世孙刘可荣先生秉承祖训,积极响应国家号召,传承发展中医药事业,发展健康产业。秉承“传承中医药国粹、和谐共赢”的理念,创办成立承和堂。- I: I; y7 S6 o; {" y

5 B; i3 `! d" i+ K) a# ^
7 p8 d# Q+ k5 |! D/ g. s7 I5 @
刘可荣先生出生在山东的一个农村家庭,自小性格顽强,学习成绩优异,由于家境贫困16岁便辍学怀揣着一颗改变家境命运的信念来到了神秘的上海,至今已20年。在上海他经历过很多很多……没地方住就睡火车站,省几个菜钱就到上海郊外采野菜,为了多挣些钱一天打几份工,通过两年的辛苦付出他有了自己的一家石材店,过了两年他又建了一家石材加工厂,又过了两年他成立了自己的工程公司,在创业期间也经历了很多……但他有着自己的经商之道,使得生意越做越大, |( n: ]$ W) r* F
近年来随着微商行业的快速发展,刘可荣先生为了传承发展中医药事业,发展健康产业,更为了把健康推广到千家万户刘可荣先生毫不犹豫的选择了超前的商业模式微商就这样纯中药熬制的新一代膏药诞生了,并命名【承和堂】,真可谓是应时而生顺势而为
" D" D+ S1 A- w! i+ M  ]
' q7 _& g2 E7 I; q# ]
据悉承和堂创始人刘可荣先生在与沸点教育签约百万战略合作的同时,也在2018(春季)沸点会暨第七届中国微商博览会预定了展位,届时,承和堂将近距离与大家见面,让我们拭目以待!
: o$ w/ ~% P& P9 m9 P% ~7 b325-326日 山东济南我们不见不散!咨询电话:18922770370 李婉卿李老师
回复

使用道具 举报

116#
bwxeqidv 发表于 2018-2-14 13:08:25 | 只看该作者

% P  K3 {4 E' `+ `+ K& C; G7 W! _! C求婚视频|婚礼视频|婚礼跟拍|婚礼微电影|婚礼现场视频|婚礼MV|婚礼摄影|婚礼摄像
" H2 n# i4 `9 K; c7 p* Y5 a3 X婚礼mv视频|婚礼视频制作|婚礼高清摄像|婚礼跟拍作品|婚礼跟拍价格|婚礼跟拍摄影
. ~. c9 x* q- l; }+ ^婚礼跟拍录像|婚礼跟拍摄像师|婚礼跟拍多少钱|最感人的婚礼视频|婚礼视频mv短片制作
$ P. c) L9 s9 S- ~婚礼摄影师|婚礼摄影跟拍价格|婚礼摄影一般多少钱|婚礼摄影师一场多少钱|豪华婚礼mv! g4 O1 R1 E2 y9 L5 V2 h  q
婚礼mv|婚礼花絮mv|婚礼视频mv短片|婚礼上播放的mv视频|最浪漫感人的婚礼视频
6 i* S6 k) |+ b' P* {3 }结婚mv创意视频短片|婚礼创意mv婚礼上播放|婚礼摄像师|婚礼摄像价格|婚礼高清摄像
0 d3 B3 m4 d% E4 H) s) e: i婚礼摄像团队|婚礼摄像跟拍|婚礼摄影摄像哪个重要|婚礼微电影制作|婚礼微电影机构7 l3 T/ j; s& t6 ~! [% n, N
国外婚礼微电影|婚礼微电影价格|婚礼微电影视频|婚礼微电影拍摄|婚礼微电影创意
$ a2 C5 t, N6 X# S, r2 D% k婚礼上放的微电影|婚礼微电影拍摄价格|结婚mv创意微电影|婚礼微电影5分钟的价格
3 A, ?$ r. Q" f4 [婚礼短视频|婚礼小短片|婚礼短片视频|婚礼开场短片|创意婚礼短片|婚礼短片拍摄$ O1 F& M# j6 f! q; Z. e
婚礼短片制作|创意婚礼视频|创意婚礼开场短片|浪漫求婚视频|求婚视频制作! b0 i% S  I7 T  l7 d
快闪求婚视频|求婚视频实拍|感人求婚视频|感人的求婚视频9 D5 p+ R8 k$ L* d$ B# V) ?7 C
6 w, U+ H% F. a+ s. Q, \
    "当婚礼落幕后,玫瑰枯萎,婚纱封存,只有影像长存" 简单的一句话描述出婚礼影像的& z! z$ i$ d. N) g3 u
重要性,5aivideo.com作为一个成熟专业的团队,多年影视拍摄实战经验及各大影视明星合作
* F3 R- u6 l! {# b& s; @6 r% g经验,逐步形成华丽唯美且清新脱俗的拍摄风格.代表作《寻夫记》优酷网点击率360万次之多,
* D. ^& y4 q8 Z4 I3 @并连续一个月被推荐至首页,观众留言和转载次数过千万已足以证明我们的实力.通过与每对
" @0 ^. g' i% o9 i* F+ i新人的沟通拍摄进而成为朋友,让新人婚礼表现看起来唯美而不做作.5aivideo.com-您的私人) H/ I1 k2 @' x+ J
放映厅,导演男主角女主角,还需要你义不容辞地出演.生活如电影,你我身在其中,且认真地
. C9 o2 p5 O( y9 S! r- y% [生活,其它都请放心地交给5aivideo.com吧9 V; e" R. X" J7 n" n, Q
官方样片网站www.5aivideo.com/ W- b* S% O/ w% K
咨询客服QQ73595(企鹅QQ) TEL:18102115983
. S, G; J8 _6 K) c7 B1 ~4 r5 r) a6 u5 f5 Q+ v% j
婚礼跟拍视频_www.5aivideo.com 婚礼摄影MV_www.5aivideo.com_婚礼摄像微电影_www.5aivideo.com/ _7 r# T$ \4 b7 j! A/ f/ i, S
9 M% Z% @! O7 S/ m  N

- c" R) W( ]2 S; h6 n- k  V" [4 T0 f' [& E$ q9 X
1 A( _$ V7 @7 L7 C6 x

* o9 e. X9 c* k6 q% v/ ~2 O1 b+ X! C7 X, G& p! U- q5 |

, c8 Z! _5 }0 y1 w1 d3 r- H8 u/ S8 C3 y$ ]( l# Y
1 l. t0 |* e+ A; L* |0 \! H5 _# J6 H

" W* t8 W6 C3 M/ w/ }) z
8 Y$ _$ S+ a8 z' G: _& w2 R/ \. }7 z* N7 Z- L- Q8 t
影视视频制作 企业宣传片制作 公司宣传片拍摄
回复

使用道具 举报

115#
ia6cid4w7e 发表于 2017-12-19 12:31:48 | 只看该作者
为了三千积分!
回复

使用道具 举报

114#
2bqg1j3wqf 发表于 2017-12-19 12:07:32 | 只看该作者
不说了,秒了!
回复

使用道具 举报

113#
i771t1194z 发表于 2017-12-19 11:37:45 | 只看该作者
666666666666666666
回复

使用道具 举报

112#
w20is30b9s 发表于 2017-12-19 10:57:11 | 只看该作者
我只是路过打酱油的。
回复

使用道具 举报

111#
44lh3o1181 发表于 2017-12-18 16:35:05 | 只看该作者
感恩无私的分享与奉献,119源码是我心中的神!
回复

使用道具 举报

110#
bt4k2eohbq 发表于 2017-12-18 12:26:15 | 只看该作者
太漂亮的源码了,非常感谢119源码论坛!
回复

使用道具 举报

109#
dhv4n30u4w 发表于 2017-12-18 10:44:36 | 只看该作者
看到这帖子真是高兴!119源码真是极品!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注

粉丝

帖子

发布主题
推荐阅读 更多
阅读排行 更多
精彩推荐
关闭

欢迎大神访问! 常来~上一条 /1 下一条

扫码联系微信

QQ号1:864750570

QQ号2:736375048

联系其一即可,YES~

QQ群9:752758310

管理QQ:

864750570

(有事咨询、留言,请直奔主题)
广东省深圳市南山区科智路08号
864750570@qq.com

手机版-小黑屋- 程序源码论坛  

Powered by king X 3.4© 2016-2023 www.cx1314.cn Inc.