Pebble日本語化&改造ログ
  全カテゴリ | Blog News | Bugs | Changes | Other Blogware
 
<< Pebbleの互換性 | Home | GoogleMap >>
Tagsでの日本語処理[FIXED]

1.9でタグによる検索が出来るようになりました。TagCloudなんてのも面白いですね。
でちょっと気になったのですが、タグに日本語を使用した場合でも一見うまく動いているのですが、よく見るとURLのパラメータがエンコードされてないです。

動いていればいいかとも思うけど、UTF-8で2バイト文字が使われれば8ビット目が立つのでRFC的にはURLエンコードすることになっているのでは?

pebble.Tag.getPermalink をjava.net.URLEncoderでURLエンコードします。

Tanalogでは検索にGETメソッドを使っていて以前の問題からGETの時のみ8859_1からUTF-8に変換しているのでこのままではエラー。(リダイレクト中はUTF-8で変換されるんですね)
Pebbleの現バージョンのようにPOSTを使えばいいのでしょうが、ちと考えがあってGETでいきたいのです。
なのでクエリパラメータが「tag:??????」となってる場合は変換しない・・というよくわからないことになってしまいました。

この問題はTomcat5.5を使用した時、さらに複雑になります。
というのもTomcat5.5ではGETの時もDecoderがかかっているようで正常に渡されます。Tomcat5はGETをリダイレクトした時のパラメータ処理がバグってたってことでしょうかね。(URLエンコードして渡したにも関わらずリダイレクト中にUTF-8に変換されてしまう)
Tag表示は、search.actionと同じ処理なので例の問題でGETだけ特殊な処理をしていたことに加え、TomcatのバージョンによってGETパラメータのエンコードが異なることになります。

ここは素直に通常の検索をPOSTにするしかなさそうですね。
よくわからないで書いたコメントなので、よくわからないですね^^;
URLエンコードと文字コードの変換とが混同しているようです。整理して新たに記事にしますわ。
コメント追加

タイトル
名前
E-mail
Webサイト
本文
情報保存 する  しない
  • 情報保存をすると次回からお名前等を入力する手間が省けます。
  • E-mailは公開されません - このエントリーの新規コメント通知が必要なら記入します。

このエントリーのトラックバックURLを表示