以前のエントリで書いたとおり,ectoを使ってます。で,ectoizeを使ってる(というか,使おうといろいろ試している)のですが,firefoxでは文字化けして使えないことに困っていました。
javascriptなんで,文字コードの扱いがおかしいのかなぁとは漠然と予測していたのですが,なにをどうしていいやらわからずにおりました。
で,今日ぼんやり「もしかしたら」と思って検索したら。。。。
- cha-ki-sho – b2evolution 0.9.0.10 の日本語対応
ブックマークレット
ブックマークレットの問題は、ブックマークレットのJavaScriptで escape() が用いられていることが原因です。encodeURIComponent() を使用するように変更します。(欧文のみの環境ですと、escape() のほうが問題が少ないようです。しかし日本語等、UTF-8を使用する場合では encodeURIComponent() のほうが無難です)
「むむむっ,これはもしかしたら」,とおもって,ectoizeのスクリプトを確認してみると。あるではないですか,escape!!!
「これだっ」と,さっそく変更してみると,きちんとうごきました。
変更後のスクリプトは
javascript: var baseUrl = 'ecto:'; var url = baseUrl;var title = document.title; url = url + 'title=' + encodeURIComponent (title); var currentUrl = document.location.href; url = url + '&url=' + encodeURIComponent (currentUrl); var selectedText; selectedText = getSelection (); if (selectedText != '') url = url + '&text=' + encodeURIComponent (selectedText);document.location.href=url;a
なるほど,他も検索してみると
- JavaScriptで得た情報をCGIへ
#escape()を用いるのが一般的と思われるが、escape()はRFC2396非準拠で
#おかしなURLになるため、あえて使用しなかった。
なんて,記述もある。
JavaScript自体はほとんど解ってませんが,まぁ,動いたからよしとしておきましょう。