MarsEditのデフォルトのBookmarkletでは、日本語のページを記事にしようとした場合ブラウザからMarsEditにテキストが渡されたときに文字化けが発生する。
原因は、BookmarkletのJavaScriptで文字のエンコードにescape関数が使用されていること。escape/unescapeは、日本語などの文字でサーバーで扱うと問題がありそうな文字コードを問題のないISO Latin 1コードに変換してくれる関数である。しかし、これらの関数は文字コードの互換性に問題がある関数で、既にobsoleteな関数と見なされている。
代わりに新しく実装されたencodeURI/decodeURI、encodeURIComponent/decodeURIComponentを使うべき。
参考までコードです。適当に改行を入れていますから
javascript: var baseUrl = 'marsedit:';
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;
(2006/03/24追記)
フォーラムに投げたら、もともとバグリストに上がっていたらしく「これで解決したよ」とのこの。
Technorati Tags: marsedit
コメント
コメントを投稿