記事本文
日本語のキーワードでタグ付けすること
タグ付けの仕組みを取り入れる際にいろいろと参考にしたのは「Technorati はどのようにしているか?」でした。
その Technorati 基準でいくならば、Tag の一覧を見る限り日本語のタグはセーフです。
一方で、タグに日本語ってどーよ?とも思ってしまうのです。
うーん。
どうしよう。
どうしよう。
現在、 AllKeywords Plugin と MT-XSearch の連携手順も一通り終わってタグ付け作業に入っているところですが、 Movable Type や weblog なんてキーワードはそのままの方が良いのですが、道路交通法なんかのキーワードは日本語のまま扱った方が良いと思い、全く悩むことなく日本語を使いまくっています。
というのも、カテゴリに日本語名を設定した場合には cat_aaaaeaaea.html みたいなファイル名になるのに対し、 MT-XSearch を使用した場合は単に検索クエリをトリガーに ReWrite するだけなので、日本語を扱うことにあまり後ろめたさを感じることがなかったことにも起因します。
( まあ、こういった場合に「後ろめたい」なんて判断基準で選ぶのはどうかと思いますが。 )
テンプレートの記述に注意
ただし、キーワードを元に記事をリストアップするような事をしている場合 ( 要するに、
/tag/keyword
のようなリンクアンカーが出来るような場合 ) はテンプレートの記述に注意が必要です。
ここでは、テンプレートにて
<$MTBlogURL$>tag/<$MTAllKeyword$>
といったリンクアンカーの作り方をしていると仮定します。
例えば、 Movable Type というキーワードの場合を考えてみましょう。
デリミタにスペースを用いている場合は Movable と Type というキーワードとして扱われ、それぞれ
/tag/Movable
と
/tag/Type
という URI のリンクアンカーになると思います。
しかし、デリミタに , を用いている場合は、 Movable Type というキーワードとして扱われ、
/tag/Movable Type
という、 URI に空白を含んだリンクアンカーになってしまいます。
空白を含んだキーワードはまだ良いとして、日本語のキーワードの場合はどうなるか。
更に、ブログというキーワードの場合を考えてみましょう。
すると、リンクアンカーは
/tag/ブログ
といった日本語を含む URI になります。
日本語を含む URI がいけない理由は RFC 2396 を参照していただくと良いでしょう。
すごく簡潔に言うと、 ASCII文字コード表のうちの 0x20 〜 0x7e の範囲の文字しか使ってはいけない、それ以外の文字はエスケープして用いよということです。
よって、ブログという日本語キーワードを元に
/tag/%A5%D6%A5%ED%A5%B0
というリンクアンカーを作成すれば問題は解決されます。
では、実際のテンプレートはどう書けば良いのか。
encode_url アトリビュートを指定することで日本語キーワードを用いてもエスケープできるようになります。
<$MTBlogURL$>tag/<$MTAllKeyword$>
というリンクアンカーの作り方の場合、
<$MTBlogURL$>tag/<$MTAllKeyword encode_url="1"$>
と変更することにより、日本語キーワードを用いたリンクアンカーも問題無く利用できるようになります。
リプライ
2 件のリプライが送られています。
この記事に対するご意見やご質問、ご感想などありましたら個別記事ページの送信フォームからお送り下さい。
- 2005-05-12T04:30+09:00 - (o)
-
URL encodingはエンコード前のcharsetに依存します。
PublishCharsetがEUC-JPやShift_JISの場合、<$MTAllKeyword encode_url="1"$>をmt-xsearchなどで使用している分にはそのcharsetで処理が行われるので問題ありません。しかし、その文字列をTechnoratiなどに渡すと正しく解釈されません。つまり、TechnoratiなどにはUTF-8の文字列をURL encodingしたものを渡す必要があります。
ちなみに拙作のMT-I18Nプラグインを使うと、以下のように書けばUTF-8にコンバートした後URL encodingしてくれます。
<MTEncodeText from="euc-jp" to="utf-8" encode_url="1">
<$MTAllKeyword$>
</MTEncodeText>
- 2005-05-16T22:18+09:00 - 真琴
-
なるほど、他所に渡す場合……。私の場合は EUC-JP なので、気に留めておく必要がありますね。エントリに書き加えておきます。
<a href="http://as-is.net/blog/archives/000900.html">http://as-is.net/blog/archives/000900.html</a> ( 書き加えるまでここにメモ )