hot双紫擒龙2026最新量化升级版,谷多多同款指

股多多-五星智投-约牛智牛懂牛-智汇谷同款指标源码,擒龙追踪,龙头二波... 双紫擒龙,动能二号,吸筹 详细

开启左侧

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

  [复制链接]
67818 115
cx 发表于 2017-11-21 21:37:41 | 只看该作者 |阅读模式 打印 上一主题 下一主题
模板文件生成html文件之后会在body开头处加入一个可见的控制符,导致页面头部会出现一个空白行。原因是页面的编码是UTF-8 + BOM。  " U- J, S0 I0 n& f+ B
+ @8 B! J6 W. M% }& |& I' Y4 Z" u( _, @
这种编码方式一般会在windows操作系统中出现,比如WINDOWS自带的记事本等软件,在保存一个以UTF-8编码的文件时,会在文件开始的地方插入三个不可见的字符(0xEF 0xBB 0xBF,即BOM)。
) h) `$ _- [* f3 L( V! `5 O
3 n* D3 Y3 k. ?1 g1 E它是一串隐藏的字符,用于让记事本等编辑器识别这个文件是否以UTF-8编码。
& `; P8 B+ O6 I, ?: _7 @3 Q$ Y/ L7 Z2 D: i0 B$ h
对于一般的文件,这样并不会产生什么麻烦。
% j3 _" ]/ }# Y9 X  ~4 Q2 V9 K) H
" b% o4 E( x4 H3 m. |. Y但对于 PHP来说,BOM是个大麻烦。因为PHP并不会忽略BOM,所以在读取、包含或者引用这些文件时,会把BOM作为该文件开头正文的一部分。; B- b3 W, ~. P+ Y# K7 z

( B3 w6 P1 D2 e6 B- B, k  Y& t: z/ {根据嵌入式语言的特点,这串字符将被直接执行(显示)出来。) ?! _. d9 x# r. C4 a6 h# e
; G$ n0 b, Z1 _# t" `& U7 [/ V
由此造成即使页面的 top padding 设置为0,也无法让整个网页紧贴浏览器顶部,因为在html一开头有这3个隐藏字符!
: A" S9 m$ [( ^& H0 P
3 `: `9 W1 ~4 G" L$ ^1 C直接notopad++ 保存为无dom格式 (格式-》转为UTF-8 无dom格式)   
8 {. D7 l( g* T0 @5 h, B5 ~9 V! ~! ~9 \) c! p* D9 U/ U
然而文件比较多,又想偷懒下,使用下列方法来实现。  
% E; |: I6 M, W$ K/ ?
: @* U7 T4 l" H% X4 K将一下代码保存为a.php文件放到根目录下,执行一下,即可自动完成转换
7 v/ @2 q) v# _# |3 `, x
. }7 o! u, U. q$ J! d) t- X; `0 j: E' o) E' y8 F
  1. <?php % a* _8 h$ j8 }/ H9 d) ~$ N" g2 i
  2. // 设定你要清除BOM的根目录(会自动扫描所有子目录和文件), x& _1 q7 }4 L6 k" X* d
  3. $HOME = dirname(__FILE__);9 |3 `% @2 e" O1 i' d/ ]) ~
  4. // 如果是Windows系统,修改为:$WIN = 1;
    8 Z- m$ r  n7 r+ U% Y1 `5 ?
  5. $WIN = 0;
    0 v! u6 B; P! G$ u2 A& D: I
  6. ?>
    8 Z( P( c/ r& E% a5 E) L0 ~' L
  7. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">& G* F( v- q5 B
  8. <html xmlns="http://www.w3.org/1999/xhtml">
    7 a, p7 ?6 K; Z! x
  9. <head>  {; r; }5 x) E* K0 a
  10. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />2 Z- F6 H8 l: _- L  p5 `
  11. <title>UTF8 BOM 清除器</title>
    $ M) h0 C+ O$ s, u3 z
  12. <style>$ j* I+ ^% L0 K2 `- y& j2 I, J
  13. body { font-size: 10px; font-family: Arial, Helvetica, sans-serif; background: #FFF; color: #000; }
    8 U: a  @: ]5 T+ X4 E: ~; p
  14. .FOUND { color: #F30; font-size: 14px; font-weight: bold; }
    : E) t3 ~, q  w' I6 q
  15. </style>( f6 H9 |5 z4 l$ |0 q* M
  16. </head>7 Y2 K2 W* L  ?' Z3 c, `* l
  17. <body>- M) n6 {! v) h- u$ p& _
  18. <?php
    ; O* i' L" {- m9 T/ [9 Q
  19. $BOMBED = array();
    7 J; q) |8 V6 h2 q8 |( f8 ~
  20. RecursiveFolder($HOME);
    1 t8 S& [, |( L* I
  21. echo '<h2>These files had UTF8 BOM, but i cleaned them:</h2><p class="FOUND">';, X; X; A  ^: {8 A- _
  22. foreach ($BOMBED as $utf) { echo $utf ."<br />\n"; }
    0 F& d3 n5 N* J1 L& ?' |) }' k
  23. echo '</p>';
    % ?  U: _, o- U4 t
  24. // 递归扫描
    - k! s+ @& }/ C( w- [
  25. function RecursiveFolder($sHOME) {
    # p6 I4 M: }, b; b9 @
  26. global $BOMBED, $WIN;
    2 X" q& z' Z" V; \1 ~% H/ L  j
  27. $win32 = ($WIN == 1) ? "\" : "/";
    * |8 g3 z5 H$ S  I: @
  28. $folder = dir($sHOME);
    ' H$ I( i) `! ]- n: z
  29. $foundfolders = array();
    5 U8 ~# A+ h0 d+ f3 w
  30. while ($file = $folder->read()) {
    $ j9 J7 J* D. S# q" D
  31.   if($file != "." and $file != "..") {3 k* ]0 b3 `0 b: j. |8 L1 i, I
  32.    if(filetype($sHOME . $win32 . $file) == "dir"){
    7 }) [! a; u( E5 H5 U$ i
  33.     $foundfolders[count($foundfolders)] = $sHOME . $win32 . $file;8 c" K7 g8 W, f* E7 ^
  34.    } else {" `. f. I% s0 l* x
  35.     $content = file_get_contents($sHOME . $win32 . $file);
    6 v2 z7 N0 W7 i% e3 |
  36.     $BOM = SearchBOM($content);$ J+ C/ R6 C! N' ^4 Y0 F
  37.     if ($BOM) {
    4 @  N0 }& M1 N$ W; _2 `
  38.      $BOMBED[count($BOMBED)] = $sHOME . $win32 . $file;
    5 v& N) ^) W" g- _; R3 g
  39.      // 移出BOM信息* p. J6 ?/ u! h# H
  40.      $content = substr($content,3);
    " h6 ^- W3 t* H+ g
  41.      // 写回到原始文件
    ! L5 X0 b7 ^' o4 y: y
  42.      file_put_contents($sHOME . $win32 . $file, $content);/ K; r# e9 `$ ?' ?7 P3 k
  43.     }( q( y3 c$ Y7 i" ~
  44.    }$ H" ~8 a$ f3 r( E. f7 y
  45.   }, Z' u7 B/ O2 g4 |5 I
  46. }" K; h9 N6 e9 |- ~. [! v+ B+ I
  47. $folder->close();
    ) B# `1 X% g: b8 L! A$ @0 k
  48. if(count($foundfolders) > 0) {
    " M# P# L$ ~, g" R( Z" n; W
  49.   foreach ($foundfolders as $folder) {
    % x3 y9 {+ B, s) V2 S! ?6 J6 Q' \
  50.    RecursiveFolder($folder, $win32);  L- p0 H3 `3 C, n
  51.   }
    ( y" n1 \+ L4 K( A: Y
  52. }6 ~' R' n$ T0 M- B, B
  53. }
    ( w' p' E+ D! |2 n1 D) x5 z
  54. // 搜索当前文件是否有BOM/ a: R; F' w1 A' [, y2 G
  55. function SearchBOM($string) { 0 K. g& h  e: v* B; Q% h; w
  56.   if(substr($string,0,3) == pack("CCC",0xef,0xbb,0xbf)) return true;
    6 t+ N  Q* h1 C! e1 I4 x
  57.   return false;
    $ E! J" C" v4 J& H" B7 B
  58. }& B* }$ ~5 X+ D+ \/ \
  59. ?>+ J. T' v7 J* t9 [
  60. </body>
    9 |3 o6 u6 `- z+ H  c7 e) D, f
  61. </html>
复制代码
这个管理员我已经测试过,确实好用的!!!如果懒得去制作文件,就下这个附件吧。用完再删除即可!/ a, ]$ A+ c2 h# }

! n6 e; h2 b5 x1 }1 K" N

本帖子中包含更多资源

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

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

使用道具 举报

精彩评论115

跳转到指定楼层
沙发
9x06k1t2j1 发表于 2017-11-21 21:40:19 | 只看该作者
确实不错,顶先
回复

使用道具 举报

板凳
z54012ce5i 发表于 2017-11-21 23:46:00 | 只看该作者
……
回复

使用道具 举报

地板
0c923d0rh7 发表于 2017-11-22 12:53:01 | 只看该作者
佩服佩服!
回复

使用道具 举报

5#
sl46h92w29 发表于 2017-11-22 19:52:57 | 只看该作者
是爷们的娘们的都帮顶!大力支持
回复

使用道具 举报

6#
zf05f43b2y 发表于 2017-11-23 04:20:01 | 只看该作者
我也来顶一下..
回复

使用道具 举报

7#
1g27uj781t 发表于 2017-11-23 11:37:56 | 只看该作者
沙发???
回复

使用道具 举报

8#
00851v3lgq 发表于 2017-11-24 11:25:22 | 只看该作者
……
回复

使用道具 举报

9#
47l53797e3 发表于 2017-11-24 13:42:15 | 只看该作者
学习下
回复

使用道具 举报

10#
b8i2oq76av 发表于 2017-11-26 04:36:31 | 只看该作者
围观 围观 沙发在哪里!!!
回复

使用道具 举报

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

本版积分规则

关注

粉丝

帖子

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

欢迎大神访问! 常来~上一条 /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.