Growl for WindowsのFirefox add-onで日本語が通らないバグを修正(修正版のインストールパッケージを暫定公開しました)
Vimperatorで、ブログやダイアリーのはてブ数を通知するプラグイン作ってるんだけど、Windows 版でもかっこよく Growl したかったので、がんばって直した。
これからパッチ投げて、プラグインのコミットしたら寝る。
直したところは、以下のとおり。
--- growlgntp.js.orig 2009-06-08 04:16:17.109375000 +0900 +++ growlgntp.js 2009-06-08 04:18:23.093750000 +0900 @@ -67,8 +67,11 @@ var socket = transportService.createTransport(null, 0, "localhost", 23053, null); socket.setTimeout(socket.TIMEOUT_READ_WRITE, 2); var stream = socket.openOutputStream(0, 0, 0); - stream.write(data, data.length); - stream.close(); + var binstream = Components.classes["@mozilla.org/binaryoutputstream;1"] + .createInstance(Components.interfaces.nsIBinaryOutputStream); + binstream.setOutputStream(stream); + binstream.writeUtf8Z(data); + binstream.close(); //socket.close(0); TODO: this causes the data to not be written for some reason },
通常のソケットで通信で使用する nsIOutputStream だとASCII文字しか送信できないらしく、それ以外の文字(日本語などの非ASCII文字)を送るにはバイナリで送信する必要があり、それには nsIBinaryOutputStream を使用する必要があった。
修正版のインストール用ファイル(追記:2009.6.8)
パッチをプロジェクトのMLに投げたのですぐに対応してくれると思うけど、それまでの間は以下から修正版をダウンロードできるようにしておきます。正式版が待てない人は使ってみてください。
Growl/GNTP 1.1.1 (UTF-8バグフィックス版)-2009.6.11 公開終了-
インストール後、アドオンの管理画面で以下のように"UTF8 bug fix version"となっていればインストール成功です。
追記:2009.6.11 正式版が公開されたので個人的なバグフィクス版を公開終了
ということで、終了です。
正式版ダウンロードは以下から