处理 EPUB 文件时,我遇到的问题是,在某些epub书籍中,路径的xhtml文件会写入 content.opf网址编码。
例如,路径“abcá.xhtml”作为href="abc%C3%A1.xhtml"
写入content.opf(%C3%A1是字符'á'的url编码表示。)
我无法在任何地方找到任何相关信息。这是EPUB标准吗?有问题的EPUB文件是使用Adobe InDesign生成的。
更新:我使用 Calibre电子书阅读器测试了epub,结果如下:
href="abc%C3%A1.xhtml"
):Calibre打开epub没有问题。href="abcá.xhtml"
):Calibre打开epub没有问题。href="abc%C3%A1.xhtml"
): Calibre无法打开epub并显示错误消息。 所以我猜Calibre URL会在尝试打开文件之前对content.opf 中的每个路径进行解码,这会导致像最后一个一样出现奇怪的边缘情况。
然而,这似乎是一种非常罕见的情况,所以我认为我将通过URL解码它们以相同的方式处理路径。
答案 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文件中的内容。