2013-02-14 25 views
1

我想將多個UTF-8文本文件放在一起,而不在文件中間有多個BOM。除了剝離每個文件的BOM之外,是否有合適的方法來做到這一點?什麼是使用BOM來捕獲UTF-8文件的正確方法?

我的問題是,剝離BOM並將這些文件放在一起後,我無法將數據複製到Postgres表中。 Postgres抱怨數據不是UTF-8。我可以複製其中一個小的,原始的BOM文件。只有拆除所有物料清單的組合文件纔會導致問題。

謝謝。

+3

不要剝離第一個文件的BOM嗎? – Mat 2013-02-14 18:39:37

+2

有關將BOM添加回最終級聯文件的信息,請參閱http://stackoverflow.com/a/4365180/469210。不過@Mat建議將BOM保留在第一個文件中避免了這一步驟。 – borrible 2013-02-14 18:43:38

+0

側面問題 - 什麼是「BOM」?請告訴我。 – mtk 2013-02-14 19:26:30

回答

1

UTF-8中沒有字節順序歧義,因此BOM不是必需的。沒有處理UTF-8的程序應該要求這樣的事情。如果在UTF-8流開始時意外發生物料清單,則始終爲字節EF BB BF。從UTF-8中刪除BOM的正確方法是首先檢查它是從這三個字節開始,然後刪除這些字節。如果你從UTF-8流中刪除了三個字節,而這三個字節不是以這三個字節開始的,那麼你並沒有刪除一個BOM,並且你可能會破壞UTF-8。

相關問題