日記
JavaScriptで選択した文章を投稿フォームに渡す (16:53)Edit

このあたりで実験されている例のアレですが、JavaScriptで非ASCIIなテキストをescapeとかencodeURIComponentすると、Unicodeとしてエンコードされて%uxxxxとか&#nnnn;とかになるっぽいですね。

で、PHPのurldecodeは文字コードは環境依存の%xx形式しかデコードできない(けど、どちらかというと現状ではこちらの方が標準的な処理だよね)んで、JavaScriptでエンコードされた文字列をデコードするには、それ専用のロジックを追加しなければならないようです。

が、基本的にmemo_form.htmlに渡される引数は、一般的なCGI同士の連携で使えるようにするのが主なので、あまり非標準的な動きはさせたくありません。現状私はこの件に関する知識が足りていないため、JavaScriptから渡されたパラメータのデコードに中途半端に対応すると、なんとなくろくなことにならない気がします。

ということで、ひとまずは上記のような形式でJavaScriptでエンコードされた文字列のデコードには対応しないことにします。ただ、各パラメータで文字コードの自動認識に対応したので、ひとまず

なんてbookmarkletを使うと、運が良ければ選択した部分がメモ本文として渡されます。けど、選択部分の内容によってはうまく渡されなかったり(文字欠け)、あるいはうまく文字コードが認識できなかったり(文字化け)することがありますので、まあちょっと便利な場合もあるよね、程度にしか使えませんが。

jounoさんのところで紹介されていたところをながめてみたところ

一番手軽でそれなりの結果が得られる方法としては、encodeURI関数を使ってエンコードする方法っぽいので、それに変えてみた。

Published At2005-02-19 00:00Updated At2005-02-19 00:00