帶 BOM 的 UTF 8格式文件帶來的災難

2021-07-10 07:02:00 字數 717 閱讀 6561



最近忙乙個php專案,安裝資料庫執行sql**時(資料表和插入資料sql語句)老是執行第乙個表和插入資料命令不執行,資料表和資料庫測試資料分別儲存在兩個txt文件中,但進入mysql資料庫中可以手動執行,怪哉怪哉。。。。

思考了2天時間,耗費了很多精力,找不出問題所在,難道真的出鬼了?既然sql語句沒有問題,為什麼會出現第乙個sql表語句不執行,其他都執行? 難帶檔案頭有**干擾?可是檔案頭是空白,沒有任何可見語句......突然想到文件內部格式,難道是這個干擾?

ps:文件內部格式,我的理解就是文件或者檔案的計算機協議格式,如告訴計算機這個是檔案還是之類的看不見的協議格式,這個任何玩計算機的人視覺是看不到的,是隱藏的,具體程式愛好者可以用編輯器開啟看下,亂碼吧.....哈哈,用程式open就看到了,都是些**,很長的字串**,難道是這個干擾?

看到檔案頭有bom標識,裡面竟然真的有分割字元,導致php不認,無法執行開始的sql語句,直接跳過第乙個,那是不是去除這個干擾**就行了呢?我沒有嘗試,但是我用軟體改變格式了,去除帶unicode (bom)協議,ok,文件語句正常執行。

坑人的節奏,這個只是遇到的問題,也許有其他人遇到,此提醒希望對所有同行有所幫助。

帶 bom 的 utf-8格式檔案有點任性,好像有的用asp寫的驗證碼不顯示加上帶 bom 的 utf-8格式屬性就顯示了,具體程式設計大神們都應該遇到過吧。。。。。。。。[同行轉走記得帶出處,**鑫躍科技,感謝!]

2016.3.1 

帶BOM的UTF 8和無BOM 的UTF 8的區別

utf 8 不需要 bom,儘管 unicode 標準允許在 utf 8 中使用 bom。所以不含 bom 的 utf 8 才是標準形式,在 utf 8 檔案中放置 bom 主要是微軟的習慣 順便提一下 把 utf 16 le 稱作 unicode 而又不詳細說明,這也是微軟的習慣 bom byte...

UTF8格式簡介

utf是unicode傳輸格式,有utf8,utf16,utf32等。這裡介紹utf8。utf8分成單位元組 雙位元組 三位元組 四位元組模式。具體如下 0 x 7bit 相容ascii碼 110 xx 10 11bit 1110 x 10 10 16bit 漢字所在 11110 10 10 10 ...

VS中無簽名UTF8和帶簽名UTF8格式

在vs中,使用高階儲存選項功能的時候,我們將會發現utf8有兩種格式,乙個是帶簽名的utf8,乙個是無簽名的utf8。那麼這兩種的格式有什麼區別呢?帶簽名的utf8 帶簽名的utf8,是在生成的檔案中,在檔案的開頭使用utf8標誌,這樣在下次使用編輯器編輯的時候,編輯器能準確的識別當前檔案的編碼格式...