2011-02-16 65 views
1

我通過php生成一個csv文件,通過瀏覽器下載。 我是否需要在開始時插入字節順序標記字節,考慮使用的目標系統可能是mac,unix,windows等?這裏需要字節順序標記嗎?

+0

Unicode標準明確指出,對於UTF-8,BOM既不是必需的,也不是推薦的**。 – tchrist 2011-02-16 03:14:32

回答

2

不,你不需要。

字節順序標記用於某些Unicode編碼,即UTF-8,UTF-16和UTF-32,以確定編碼實際上是Unicode編碼。

在UTF-16中,它用於區分UTF-16和UCS-2(UTF-16的子集)。

它在UTF-8和UTF-32中是可選的,但是是有效的。但是,在UTF-8中,它可能會導致兼容性問題。引述a well-phrased Wikipedia entry

如果與現有 程序的兼容性並不重要,BOM 可以用來標識文件是否爲UTF-8與遺留編碼 ,但 這仍然是有問題的,因爲很多 添加了BOM的實例或刪除了 但未實際更改 編碼或各種編碼將 連接在一起。檢查 文本是否有效UTF-8比使用BOM更可靠 。

由於這些原因,我會反對在UTF-8中使用BOM。

0

關於原始問題,它真的取決於文件在編寫時的編碼方式。如果它是utf-8編碼,我會添加BOM。如果文件中只有ASCII字符,則BOM可能不存在,因爲沒有序列。但是,如果utf-8序列位於文件中,則可以更輕鬆地檢測BOM以遍歷整個文件並檢查有效序列。即使您檢測到單個序列,它仍然可能是0x7F以上的單個字符。