FirefoxのExtensionで、ブラウザのテキストボックスからフックしてエディタを起動するIt’s all textというものを愛用している。任意のテキストエディタで、たとえばこのはてなのエントリーだとかGmailだとかがかけるのでたいへん重宝している。
しかしながら、空のテキストボックスからエディタを起動した場合、それに日本語文字を書いて終了操作をすると、完全にテキストボックスに戻した状態で文字化けしてしまうという現象に悩まされていた。
予め、一文字以上全角文字が入力されているテキストボックスから起動した場合は、そのような現象は起きない。
これはおそらく、エディタのデフォルトの文字コードとブラウザ又はこのExtensionが引き渡す文字コードとの違いが原因であろうという事はだいたい想像できる。
デフォルト設定のままで、空のテキストボックスからエディタを起動すると、エディタは文字列が何もないので、エディタのデフォルト(Shift JIS)で起動する。このままS-JISで文字を書いてテキストボックスに戻すと、ブラウザの側の文字コードが多分違ったりしていたりすると、その時点で完全に文字化けを起こしてしまう。いや、ブラウザ側ではなく、It’s all textのデフォルトがUTFなので、S-JISがUTFでエンコードされて、とにかくおかしな事になるのではないか。
予め日本語文字が入力されているボックスから起動すると、多分、It’s all textでUTFで渡されるのか、エディタもUTFの文字コードで解析してテキストを編集させるので、戻したときもUTFのままで何も問題は生じない。
まあ、正確には違うかも知れないが、動作と要因はだいたいそんなようなイメージなのだろう。
It’s all textには文字コードを設定するところがあって、前にもそこを試したがうまく動作しなかったので放っておいたのだが、このたびそこをShift_JISとしてやってみたら、空欄から起動しようが文字入りから起動しようが、常にS-JISで渡されるので、ボックスに戻ったときも文字化けがしない状態になった。
おそらくこれで解決できるものと思う。