2006-03-23

MarsEdit Bookmarkletの改良

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:

0 件のコメント:

コメントを投稿