題 從LibreOffice導出UTF-8文本而沒有字節順序標記


在LibreOffice中,如果我將文檔保存為文件類型“編碼文本”並選擇“Unicode(UTF-8)”作為編碼,它總是在文本的開頭寫入字節順序標記(BOM)。即使在導出沒有此類標記的文本(例如導入的ISO-8859-8文本)時,它也會這樣做。有沒有辦法抑制BOM的生成?

根據 Unicode文檔:“在8位環境中透明地使用UTF-8的地方,使用BOM會干擾任何在開始時需要特定ASCII字符的協議或文件格式“這正是我遇到的問題,因為文本將被送到一個不期望初始BOM的程序。


5
2017-10-12 16:37


起源




答案:


有一個未決的2018補丁附加到a 相關的2011年錯誤報告

Martin van Zijl 2018-02-26 18:48:14 UTC

我創建了一個補丁供審核。如果您這樣做,請使用此補丁:

1)文件 - >另存為...
  2)選擇Type =“Text(選擇編碼)”
  3)單擊“使用文本 - ...”
  4)在最後一個對話框中將出現一個複選框“Include byte-order-mark”。如果取消選中此項,則BOM將不會包含在輸出中。

附加視頻演示。

評論鏈接:    https://gerrit.libreoffice.org/#/c/50388/


1
2018-03-09 18:28



很高興知道這最終得到了解決。 BOM對UTF-16編碼很有用,但沒有任何價值,應該刪除UTF-8導出。我在bug報告主題中註意到了這條評論: “我同意這一點。但目前我們的開發人員很少。這可能需要幾年時間。對不起這種情況。” 它已經持續了七年,所以無論誰做出這樣的評論顯然都是一個很好的估算者。 :) - Ted Hopp


使用“另存為”保存文件時,在“所有格式”下選擇“文本編碼”,然後單擊“保存”。 出現“確認文件格式”對話框時,選擇“使用文本編碼格式”。 ASCII過濾器 然後出現選項對話框。選擇西歐(ASCII / US)並單擊“確定”。如果您使用十六進制編輯器(如Bless)檢查生成的文件,您將看到BOM已消失。


-1
2017-07-24 15:57



那麼BOM當然不見了,但文件也不再用UTF-8編碼了! - kreemoweet
然後,沒有一個西歐角色以及127以上的西歐角色也消失了 - phuclv
對不起,但這根本不能解決這個問題。我需要一種從LibreOffice導出UTF-8文本而無需BOM的方法。 - Ted Hopp
@TedHopp好吧,如果你選擇他說的那個怎麼辦?在文件上運行“file”命令,看看它的內容。您可以嘗試編輯UTF-8文件的十六進制並刪除BOM。你有沒有試過這個? - barlop
@barlop - 他建議的選項導致文件中的垃圾代替非ASCII字符(例如,西里爾語,希伯來語,希臘語等)我沒有看到“文件”命令如何有用。編輯十六進制和刪除BOM可能適用於此處或那裡的文件,但完全不適合生產工作。此外,它根本沒有解決我的問題:有沒有辦法抑制從LibreOffice生成BOM? - Ted Hopp