content.of中的路径是否按标准进行URL编码?

时间:2012-10-30 13:02:51

标签: standards epub

处理 EPUB 文件时,我遇到的问题是,在某些epub书籍中,路径的xhtml文件会写入 content.opf网址编码
例如,路径“abcá.xhtml”作为href="abc%C3%A1.xhtml"写入content.opf(%C3%A1是字符'á'的url编码表示。)

我无法在任何地方找到任何相关信息。这是EPUB标准吗?有问题的EPUB文件是使用Adobe InDesign生成的。

更新:我使用 Calibre电子书阅读器测试了epub,结果如下:

  • 文件名中的特殊字符,content.opf中的URL编码路径(abcá.xhtml和href="abc%C3%A1.xhtml"):Calibre打开epub没有问题。
  • 文件名中的特殊字符,特殊字符直接写入content.opf中的路径,带有UTF-8(abcá.xhtml和href="abcá.xhtml"):Calibre打开epub没有问题。
  • 文件名包含一个恰好是URL可解码的字符串,并且相同的字符串被写入content.opf(abc%C3%A1.xhtml和href="abc%C3%A1.xhtml"): Calibre无法打开epub并显示错误消息。

所以我猜Calibre URL会在尝试打开文件之前对content.opf 中的每个路径进行解码,这会导致像最后一个一样出现奇怪的边缘情况。
然而,这似乎是一种非常罕见的情况,所以我认为我将通过URL解码它们以相同的方式处理路径。

1 个答案:

答案 0 :(得分: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文件中的内容。