Namazu-users-ja(旧)


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: meta タグの中身の全角記号を変換した後のエスケープ



 濱谷です。

On Tue, 19 Mar 2002 21:29:28 +0900 (JST)
Saito HiroAki <findout@xxxxxxxxxxx> wrote:
| <meta name="sub_text" content="劇団”なまず”公演"> や、
| <meta name="sub_text" content="公開講座<Cプログラミング>開催"> 
| といったヘッダを持つHTMLファイルを mknmz でインデックスした場合、
| 「”」が 「"」 に、「<」 が 「<」 に変換されます。
| 
| そのため、html.pl の get_meta_tags() で content の中身を抽出するとき、
| 正常に抽出されません。
(略)
| mknmz と html.pl を追いかけてみたところ、
| html.pl にファイルの中身が渡される前に、
| 半角文字に変換がなされているようですね。
| 
| 現時点では、HTML文書の「<」などを予め別の文字に
| 置き換えることで対処していますが、
| もっとスマートな解法があるのではないかと考え、投稿した次第です。

 試していませんが、こんな感じで処理できるような気がします。

 半角文字に変換する前に次の変換を行う。(mknmzかcodeconv.plかな?)
    ”→ &quot;
    <→ &lt;
    >→ &gt;
 半角文字に変換し、<META> contents を取り出した後、mknmzに値を
返す前に次の逆変換を行う。
(html.pl の get_meta_tags あたりで。
  既存の decode_entity/encode_entityが使えそう)
    &quot; → "
    &lt;   → <
    &gt;   → >

 ただ、このままではhtml以外の文書に対してはまずいです。
 filter/*.pl に、こういったMediaTypeに依存したquote処理を定義
できればいいんですが……既存の処理では見つけられませんでした。

---
  濱谷 千尋 (Hamatani, Chihiro)
  E-Mail: chihiro4ml@xxxxxxxxxxx http://discypus.jp