2

EPUBファイルを処理しているときに、一部の epub ブックでxhtml ファイルのパスがcontent.opf URL encodedに書き込まれるという問題に遭遇しました。
たとえば、パス「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 で content.opf のパスに直接書き込まれます (abcá.xhtml および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 仕様からの関連する 2 つの節:

セクション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 に答える