2

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

我在任何地方都找不到有关此的任何信息。这在 EPUB 标准中吗?有问题的 EPUB 文件是使用 Adob​​e InDesign 生成的。

更新:我用Calibre E-book viewer测试了 epub,结果如下:

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

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

4

1 回答 1

1

看起来这可能是 InDesign 做的一件坏事。OPF 规范中的两个相关段落:

来自第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 文件中的内容。

于 2012-10-30T22:47:05.790 回答