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かな?)
”→ "
<→ <
>→ >
半角文字に変換し、<META> contents を取り出した後、mknmzに値を
返す前に次の逆変換を行う。
(html.pl の get_meta_tags あたりで。
既存の decode_entity/encode_entityが使えそう)
" → "
< → <
> → >
ただ、このままではhtml以外の文書に対してはまずいです。
filter/*.pl に、こういったMediaTypeに依存したquote処理を定義
できればいいんですが……既存の処理では見つけられませんでした。
---
濱谷 千尋 (Hamatani, Chihiro)
E-Mail: chihiro4ml@xxxxxxxxxxx http://discypus.jp