在处理EPUB文件时,我遇到了在一些 epub 书籍中将xhtml 文件的路径写入content.opf URL 编码的问题。
例如,路径“abcá.xhtml”被写入 content.opf 中href="abc%C3%A1.xhtml"
(%C3%A1 是字符 'á' 的 url 编码表示)。
我在任何地方都找不到有关此的任何信息。这在 EPUB 标准中吗?有问题的 EPUB 文件是使用 Adobe 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 解码以相同的方式处理路径。