Mozilla L10N フォーラム一覧 Mozilla 製品 とその関連ソフトの日本語化に関するフォーラムです。
参加方法などは modest を、変更履歴は Github をご覧ください。
 よくある質問  •  検索  •  登録ユーザ一覧  •  グループ   •  登録  •  ユーザ設定  •  ログインして PM を確認  •  ログイン
 文字エンコードについて 次のトピックを表示
前のトピックを表示
トピックの新規投稿返信
投稿者 メッセージ
ゆ吉
ゲスト





記事 件名: 文字エンコードについて     投稿時間: 2005年11月02日(水) 15:19 引用トップに移動

Firefoxの拡張にて、Webページ内の選択文字を他のサイトのサーチエンジンに飛ばして検索をしたいと思っているのですが、元のサイトと検索サイトの文字エンコードの違いによって文字化けしてしまいます。英語で使用するには問題ないのですが、日本語での利用では(Shift-js EUC-jp unicode)の問題がどうしてもでてくるので・・・。

そこでこの問題を元のサイトの文字エンコード情報を利用して、それぞれの文字エンコードによって飛ばすurlを設定して回避できないかと思っているのですが、有用な文字エンコードの取得方法、参考資料等ないでしょうか?
dynamis



登録日: 2003年10月 05日
記事: 1743

ユーザ情報を表示メッセージを送信ウェブサイトに移動
記事 件名: Re: 文字エンコードについて     投稿時間: 2005年11月04日(金) 05:23 引用トップに移動

ゆ吉 wrote:
Firefoxの拡張にて、Webページ内の選択文字を他のサイトのサーチエンジンに飛ばして検索をしたいと思っているのですが、元のサイトと検索サイトの文字エンコードの違いによって文字化けしてしまいます。英語で使用するには問題ないのですが、日本語での利用では(Shift-js EUC-jp unicode)の問題がどうしてもでてくるので・・・。

そこでこの問題を元のサイトの文字エンコード情報を利用して、それぞれの文字エンコードによって飛ばすurlを設定して回避できないかと思っているのですが、有用な文字エンコードの取得方法、参考資料等ないでしょうか?

拡張機能の開発に関する知識はないのですが、現在のページで使用されている文字エンコーディングを取得するだけであれば、単に document.characterSet で取得できるかと思います。

検索エンジン側が複数の文字エンコーディングに対応しているのであれば、これをもとに引数で文字エンコーディングを指定する。単一エンコーディングにしか対応していないのであれば、文字エンコーディングの変換をした上で呼び出すという流れになるのではないかと勝手に想像します。

文字コード変換とか全然やったことないので知りませんが、何かの参考になるかも知れないものを上げておきます。
http://www.xulplanet.com/references/objref/HTMLDocument.html
http://www.xulplanet.com/references/xpcomref/ifaces/nsIUTF8ConverterService.html
http://www.xulplanet.com/references/xpcomref/group_Localization.html
ゆ吉
ゲスト





記事 件名:     投稿時間: 2005年11月04日(金) 17:04 引用トップに移動

dynamisさん
ありがとうございます。
私もdocument.characterSetで取得できるのではと思っていたのですが、
EUC_JPのページでも、Shift_JISと返ってくるのです。
UTF-8のページでは、UTF-8と返ってきます。
教えていただいた、ページを参考に調べてみようと思います。
dynamis



登録日: 2003年10月 05日
記事: 1743

ユーザ情報を表示メッセージを送信ウェブサイトに移動
記事 件名: document.characterSet について     投稿時間: 2005年11月04日(金) 19:06 引用トップに移動

ゆ吉 wrote:
私もdocument.characterSetで取得できるのではと思っていたのですが、
EUC_JPのページでも、Shift_JISと返ってくるのです。
UTF-8のページでは、UTF-8と返ってきます。
教えていただいた、ページを参考に調べてみようと思います。

characterSet ですが、javascript: alert( document.characterSet ); あるいは javascript: alert( window.content.document.characterSet ); で取得したり、DOM インスペクタから値を確認した限りでは、ブラウザの表示に使用されている文字エンコーディングがそのまま得られています。
確認に使用したサイト:

UTF-8
http://www.mozilla.org/
http://www.google.co.jp/firefox

EUC-JP
http://www.mozilla-japan.org/
http://www.mozilla.gr.jp/

Shift_JIS
http://firefoxhacks.at.webry.info/
http://www.amazon.co.jp/exec/obidos/ASIN/4873112419/

ISO-2022-JP
http://www.st.ryukoku.ac.jp/~kjm/security/memo/
http://www.genpaku.org/

ISO-8859-1
http://mozillazine-fr.org/
http://xulplanet.com/

javascript: URL や DOM インスペクタでの値が正しいのであれば、対象 HTMLDocument オブジェクトの取得(選択)を間違っているのかという可能性はないでしょうか?
Firefox 内部でページの characterSet を取得して使っているコードの例として例えば:
http://lxr.mozilla.org/mozilla1.8/source/browser/base/content/browser.js#120
Code:
120 function pageShowEventHandlers(event)
121 {
122   // Filter out events that are not about the document load we are interested in
123   if (event.originalTarget == content.document) {
124     checkForDirectoryListing();
125     charsetLoadListener(event);
126 #ifdef ALTSS_ICON
127     updatePageStyles();
128 #endif
129     FeedHandler.updateFeeds();
130   }
131
132   // some event handlers want to be told what the original browser/listener is
133   var targetBrowser = null;
134   if (gBrowser.mTabbedMode) {
135     var targetBrowserIndex = gBrowser.getBrowserIndexForDocument(event.originalTarget);
136     if (targetBrowserIndex == -1)
137       return;
138     targetBrowser = gBrowser.getBrowserAtIndex(targetBrowserIndex);
139   } else {
140     targetBrowser = gBrowser.mCurrentBrowser;
141   }
142
143   // update the last visited date
144   if (targetBrowser.currentURI.spec)
145     BMSVC.updateLastVisitedDate(targetBrowser.currentURI.spec,
146                                 targetBrowser.contentDocument.characterSet);
147 }

event オブジェクトからその発生元タブの Index を取得し、そのページのドキュメントオブジェクトの characterSet を得ているように見えます。
gBrowser は 以下のコードで初期化されており、tabbrowser 要素のオブジェクトです。
gBrowser = document.getElementById("content");

勝手にそうだと想像して上記コードを引用しましたがゆ吉さんの拡張機能では event もらって処理するという流れではなかったり、このようなコードを使っても上手くいかないのであれば、他の使用例を LXR から適当に探してみるか、ページの文字エンコーディングに依存する他の拡張機能を探して調べてみると適切なコードが見つかるかも知れません
http://lxr.mozilla.org/mozilla1.8/search?string=.characterSet
ゆ吉
ゲスト





記事 件名:     投稿時間: 2005年11月05日(土) 17:06 引用トップに移動

dynamisさん
おっしゃるとうり対象 HTMLDocument オブジェクトの取得を間違っておりました。
丁寧に解説していただきありがとうございました。

現在dictionary_tooltipという拡張
https://addons.mozilla.org/extensions/moreinfo.php?application=firefox&category=Popular&numpg=10&id=1171
日本語localeを採用していただいたので、辞書をいくつか作っております。

また質問があるときは、よろしくお願いします。
指定期間中に書かれた記事を表示:      
トピックの新規投稿返信


 別のフォーラムに移る:   



次のトピックを表示
前のトピックを表示
新規トピックを投稿できます
既存トピックに返信できます
自分の記事を編集できません
自分の記事を削除できません
投票に参加できません


Powered by phpBB © 2001, 2002 phpBB Group (customized by dynamis) :: FI Theme :: All times are GMT +9:00