2012-10-30 72 views
2

當處理EPUB文件,我碰到這個問題,在一些epub電子書的XHTML文件的路徑寫入編碼content.opf URL。
例如,路徑「abcá.xhtml」作爲href="abc%C3%A1.xhtml"被寫入content.opf(%C3%A1是字符'á'的url編碼表示形式)。
content.opf中的路徑是否由標準URL編碼?

我無法在任何地方找到任何有關此信息。這是EPUB標準嗎?有問題的EPUB文件是使用Adobe InDesign生成的。

更新:我測試了EPUB與口徑電子圖書閱讀器,結果如下:

  • 在文件名中特殊字符,在content.opf(URL編碼的路徑abcá.xhtml和href="abc%C3%A1.xhtml"):Calibre打開epub沒有問題。
  • 文件名中的特殊字符,特殊字符直接寫入到帶有UTF-8(abcá.xhtml和href="abcá.xhtml")的content.opf中的路徑中:Calibre打開epub並沒有問題。
  • 文件名包含恰好可以進行URL解碼的字符串,並將相同的字符串寫入content.opf(abc%C3%A1.xhtml和href="abc%C3%A1.xhtml"):Calibre無法打開epub並顯示錯誤消息。

所以我想這口徑URL解碼嘗試打開這些文件,這可能會導致奇怪的邊緣情況下,像最後一個之前在content.opf每一條路徑。
但是,這似乎是一個相當罕見的情況,所以我認爲我將通過URL解碼它們來以相同的方式處理路徑。

回答

1

看起來它可能是InDesign所做的一件壞事。從OPF spec兩個相關段落:

從部分1.3.4:關係到Unicode

閱讀系統必須解析所有UTF-8和UTF-16字符正確(所要求的XML)。閱讀系統可能會拒絕顯示某些字符,但必須能夠以某種方式發送不可顯示的字符。閱讀系統不能僅將Unicode字符顯示爲8位字符。

而第1.4一致性

1.4.1.1:包裝一致性

每個符合的OPF包裝文檔必須滿足這些必要條件:

  • 這是一個良好形成的XML文檔(如XML 1.0中定義的);和
  • 它以UTF-8或UTF-16編碼;和
  • ...

我的閱讀是閱讀系統需要能夠分析href="abcá.xhtml"的,所以這是InDesign中應該放什麼.opf文件。

+0

我猜測 - 沒有測試 - 網址編碼具有不同讀者的可變支持。 – Freney

+0

感謝您的確切信息,我測試了Calibre電子書閱讀器的行爲並更新了我的問題和結果。 –