3

Genshi(簡略化)を使用した次のPythonコードがあります:

with open(pathToHTMLFile, 'r') as f:
    template = MarkupTemplate(f.read())
finalPage = template.generate().render('html', doctype = 'html')

©ソースHTMLファイルには、、、などのエンティティが含まれてい™ます®。GenshiはこれらをUTF-8文字に置き換えます。これにより、ビューアで問題が発生し(出力は、Web要求への応答ではなく、スタンドアロンファイルとして使用されます)、最終的に結果のHTMLが表示されます。Genshiがこれらのエンティティを解析するのを防ぐ方法はありますか?のようなより一般的なもの&はうまく通過します。

4

3 に答える 3

9

実際&にはパススルーされず、アンパサンド文字に解析されて&から、HTMLで文字通りのアンパサンドを表すために必要なため、途中でシリアル化されます。©一方、は必要なエスケープではないため、リテラル文字のままにしておくことができます。

したがって、エンティティ参照の解析を停止する方法はありません。ただし、プレーンASCIIにシリアル化することで、非ASCII文字が戻る途中で確実に再エスケープされるようにすることができます。

template.generate().render('html', doctype= 'html', encoding= 'us-ascii')

それでも出力でエンティティ参照©を取得することはできませんが、同等の文字参照©を取得でき、最終的なファイルを表示しているものなら何でも理解できるはずです。

于 2009-10-12T17:25:43.473 に答える
3

こだわり

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

HTMLので、<head>ブラウザがUTF-8を正しくレンダリングするようにする必要があります。

明確にするために、根本的な問題は、対応する©UTF-8文字が静的HTMLで正しくレンダリングされないことです。HTMLにメタタグを配置すると、ブラウザに文字セットを正しく解釈する方法が示され、UTF-8文字が正しくレンダリングされます。

于 2010-04-16T03:02:04.283 に答える
0

Genshiで(x)htmlマークアップ文字がエスケープされないようにするには:

from genshi.core import Markup
...
newstring = Markup(oldstring)
...
<now apply templates as before, but substituting newstring for oldstring>
于 2013-12-08T09:29:48.073 に答える