[精讚] [會員登入]
1377

UTF-8 BOM (Byte Order Mark) 的問題

在 Michael Kaplan 那看到 Every character has a story #4: U+feff

此文完整連結 http://n.sfs.tw/10053

複製連結 UTF-8 BOM (Byte Order Mark) 的問題@新精讚
(文章歡迎轉載,務必尊重版權註明連結來源)
2019-10-25 12:12:40 最後編修
2016-10-19 11:56:27 By 張○○
 

自動目錄

在 Michael Kaplan 那看到 Every character has a story #4: U+feff (alternate title: UTF-8 is the BOM, dude!) 解釋為甚麼 Windows 2000 以後的 Notepad 存 UTF-8 的檔案會加上 BOM(Byte Order Mark, U+FEFF), 主要是因為 UTF-8 和 ASCII 是相容的, 為了避免使用者自己忘記用甚麼存, 造成 UTF-8 檔案用 ASCII 模式開看到是亂碼, 所以在檔案最前面加上 BOM(是的, MS 總是考慮普羅大眾)

然後提到了很多程式, 尤其是 unix 上的工具和一些 xml 工具, 只能處理沒有加上 BOM 的 UTF-8 檔案, 以及根據標準, 為甚麼這樣子不能叫做符合標準, 他有順便錶一下自家的 FrontPage 2000 啦, 不過主要還是抱怨一堆不懂 unicode 標準的人自以為是專家在那邊罵 MS :P

如果在 Smarty 中 include 了 UTF-8 格式的檔案,就要小心 BOM (Byte Order Mark) 的問題。

BOM 的由來簡單來說是為了讓一些編輯程式能夠辨認該檔案是不是屬於 Unicode 格式,請參考[2]。

那麼為什麼 BOM 會造成影響呢?因為 BOM 對 HTML 來說是屬於字元,所以 include UTF-8 的檔案時,HTML 就會就會認為被 include 的子樣版上方有個字元,因此就會保留一個空間給它了,就是你們看到那個白白的空行。

(BOM在這裡,但你看不見它)<?php
session_start();
?>

延伸閱讀

[PHP] 移除檔案的UTF8 BOM

參考資料

[1] 網站製作學習誌 http://blog.roodo.com/jaceju/archives/1100799.html
[2] 憤怒的青蛙: UTF-8, BOM, Micrisoft


原文 2009-02-10 14:25:13

你可能感興趣的文章

[CSS] 將多張圖片合併,製作css spirte 網站中有很多的小圖,如果能把他們合併後再用CSS取用,就能大幅的提升網路效能。

[CSS] HTML 畫出粗外框表格的方法 (粗框表格) 在畫表格的時候,習慣上表格的外框要比內部的線條來得粗,不但比較美觀,而且看起來比較完整

textarea計算字數和行數 textarea可以大量的放入文字,但要如何計算字數和行數呢?

如何讓瀏覽器每次都重新載入css、js、圖檔 不管怎麼刷新網頁,他總是跑出來舊的內容,這對開發的人來說很困擾...

讓radio box 或checkbox 好按 在行動裝置下,radio box及checkbox變得很難按得到

[HTML] CSS中的折字換行或不換行(防止容器破壞) 使用者留言時故意來用一串長長的且沒有任何空白的長字串,把你的容器破壞得很難看...

[HTML] 影像地圖 使用HTML的MAP標籤製作影像地圖

[HTLM5] 表單時間日期date/time輸入類型 介紹HTML5和時間有關的輸入類型date/datetime/datetime-local/month/time/week

[CSS] 背景 background css 中最常用的特性(property)之一就是 background ,這個有什麼好難的?事實上 backgroun

[CSS] 改變文字選擇的顏色(反選的顏色) 我們會用滑鼠選取一小段文字,可能是為了複製或是為了看他清楚點,這篇來改變他選擇時的背影色。

我有話要說


限制:留言最高字數1000字,超過部分會被截掉。請注意:留言不可帶有網址,會被濾掉。 限制:未登入訪客,每則留言間隔需超過10分鐘,每日最多5則留言。

訪客留言

[無留言]

隨機好文

[jQuery] 利用load()來達成ajax的寫法 jQuery中利用load()來達成ajax的寫法,也有人稱他是假的ajax,作法就是..

[jQuery] textarea 的取值和給值 HTML 的 TEXTAREA 標籤若要用 jquery 取值,不能使用 .text() 或 .html() ,使用 .

談借錢 人借錢時手心向上頭向下,人還錢時手心向下頭向上

安裝SPHINX支援中文 新版本的 sphinx 和舊版不同,網路上很多範例和教學是不能用的。此文是安裝和設定方法分享

看懂DSUB DVI HDMI USB等各式影音接頭 看懂DSUB DVI HDMI等各式影音接頭