この日記はMozillaのプロダクトへの貢献者としての私の成果を中心に、気になったバグやWeb界隈の話題について書いていますが、 断り書きがある場合を除き、いかなる団体のオフィシャルな見解ではありません。あくまでも個人的なものです。 Mozilla Foundation、Mozilla Corporation、及び関連企業の公式情報ではないことに注意してください。

現在、XHTML 1.0 (もどき)から、HTML5なコンテンツに修正中です。古い日記は修正が完了していませんので表示が崩れます。 順次、修正していく予定ですのでしばらくお待ちください。

もずはっく日記(2008年3月)

2008年3月13日

Bug 5988 プラグインの説明に非ASCII文字があると about:plugins に説明文が出てこない
初回投稿日時: 2008年03月13日20時18分40秒
カテゴリ: Firefox Mozilla Core バグ修正
SNS: (list)

MacOS XでQuickTimeのプラグインの説明がabout:pluginsでは表示されない、アドオンマネージャでは文字化けするというバグです。

以前にも説明したような気もしますが、MacOS Xはテキストファイル等ではShift_JIS等のローカルなエンコーディングを使いますが、ファイルシステムはUTF-8です。このようなエンコーディングのずれはMacOS Xでのみ発生するものなので、旧MacOSの時代に書かれたコードではこれらを意識して使い分けていませんでした。そのため、Shift_JISで取得されたQuickTimeプラグインの情報がUTF-8としてデコードしようとする訳ですが、UTF-8としてはInvalidなバイト列であるため、処理を中断して無かったことにしている、というのがabout:pluginsの場合の問題でした。

また、about:pluginsはDOM経由で文字列を取得するため、マルチバイトを意識した構造になっていたのですが、アドオンマネージャではプラグイン情報を管理しているだけだった国際化されていないクラスから直接文字列をISO-8859-1として取得していたため、文字化けしていました。

前者はnsPluginHost、後者はnsPluginTagで、nsPluginHostはnsPluginTagのDOM用のラッパーのようなものでした。そこで、nsPluginHostは文字のエンコーディングを気にしないように修正し、nsPluginTagはUTF-8で常にデータを持つように修正しました。これによって、どちらのクラスにアクセスしても、国際化された文字列が返されるようになっています。また、MacOS X固有のエンコーディングの違いにも配慮した設計に修正しています。

関連するかもしれないエントリ

bug 5988を含むエントリ

このエントリへのリンク元