• ベストアンサー

EUC-JPに対応しているjQueryを知りませんでしょうか

いつも適切なご解答をありがとうございます。 表題の件について質問させていただきます。 表題の件、EUC-JPにてサイトを制作しているのですが、 ヘッダとフッタを別htmlファイルにして、 jsファイルでインクルードさせようとしております。 ただ、インクルード用のjQueryを探しているのですが、 EUC-JPでは対応している物が見つかりません。。 jQueryサイトなど、どんな情報でもかまいませんので、 ご存知のことがありましたら教えていただければ大変助かります。 どうぞよろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • cyokodog
  • ベストアンサー率56% (13/23)
回答No.6

jQuery などのライブラリで ajax関連の機能を使う場合、基本読み込み対象のページは utf-8 である必要があります。utf-8 でない場合は iframe ベースの ajax を使用することで回避できるかと思います。 こちら↓の記事の終わりの方に、$.fn.iframeAjax というメソッドの定義があるので、これを事前に定義しておき.. http://d.hatena.ne.jp/cyokodog/20090616/iframe01 html に 取得したコンテンツを格納する div 要素を以下のように書いておき.. <div id="result"></div> 下記処理を実行すればできるかと思いますが、いかかでしょう? jQuery(function($){ var dummy = $('<a href="読み込みたいhtml">dummy</a>').appendTo('body'); dummy.iframeAjax(function(doc){ $('#result').html(doc.find('body').html()); }); setTimeout(function(){ dummy.click(); setTimeout(function(){ dummy.remove(); },100); },0); }); ちなみに私の会社でも諸事情で Shift_JISベースのhtmlしか使えない環境があるので、上記の方法と同様の原理のプラグインを作って ajax を実現させています(IE8でも動いてます)

参考URL:
http://d.hatena.ne.jp/cyokodog/20090616/iframe01
koke21
質問者

お礼

おおお、なるほど! 参考になりました>< ありがとうございます!

その他の回答 (5)

noname#137826
noname#137826
回答No.5

No. 3です。 object要素(もしくはiframe要素)でヘッダとフッタの内容を表示させるという手がありますね。試してみたところ、この場合はIE8でも文字化けせずに表示されました。 ただし、IE8ではJavascriptを使って追加されたobject要素は表示されないようです。したがって、htmlファイルに書き込む(静的)、あるいは、iframe要素を追加する(動的)のが現実的対応になりそうです。

koke21
質問者

お礼

度々ご回答いただきましてありがとうございます! そうなんですよね。 IEだけ「また」うまくいかないんですよ。。 最終手段としては静的な対応を考えているのですが、 どこかで実装されていると思うんですよね。 原理的に難しいのでしょうか。。 ありがとうございました!

  • yuu_x
  • ベストアンサー率52% (106/202)
回答No.4

[quote cite="http://www.w3.org/TR/xml/#charencoding" title="4.3.3 Character Encoding in Entities"] Each external parsed entity in an XML document may use a different encoding for its characters. All XML processors MUST be able to read entities in both the UTF-8 and UTF-16 encodings. The terms "UTF-8" and "UTF-16" in this specification do not apply to related character encodings, including but not limited to UTF-16BE, UTF-16LE, or CESU-8. Entities encoded in UTF-16 MUST and entities encoded in UTF-8 MAY begin with the Byte Order Mark described by Annex H of [ISO/IEC 10646:2000], section 16.8 of [Unicode] (the ZERO WIDTH NO-BREAK SPACE character, #xFEFF). This is an encoding signature, not part of either the markup or the character data of the XML document. XML processors MUST be able to use this character to differentiate between UTF-8 and UTF-16 encoded documents. In the document entity, the encoding declaration is part of the XML declaration. The EncName is the name of the encoding used. In an encoding declaration, the values " UTF-8 ", " UTF-16 ", " ISO-10646-UCS-2 ", and " ISO-10646-UCS-4 " SHOULD be used for the various encodings and transformations of Unicode / ISO/IEC 10646, the values " ISO-8859-1 ", " ISO-8859-2 ", ... " ISO-8859- n " (where n is the part number) SHOULD be used for the parts of ISO 8859, and the values " ISO-2022-JP ", " Shift_JIS ", and " EUC-JP " SHOULD be used for the various encoded forms of JIS X-0208-1997. It is RECOMMENDED that character encodings registered (as charsets) with the Internet Assigned Numbers Authority [IANA-CHARSETS], .. In the absence of information provided by an external transport protocol (e.g. HTTP or MIME), it is a fatal error for an entity including an encoding declaration to be presented to the XML processor in an encoding other than that named in the declaration, or for an entity which begins with neither a Byte Order Mark nor an encoding declaration to use an encoding other than UTF-8. [/quote] XML を読み込むプロセッサは、UTF-8 又は、UTF-16 を解釈できなければならない。 XML プロセッサは、BOM (0xFEFF) をもって、UTF-8 と UTF-16 を判別する。 (周知のことと思いますが)XML 宣言で"Shift_JIS", and " EUC-JP" 等々が指定された場合は、再読み込みされる。 HTTP 又は MIME が送られなかった場合、プロセッサにとって致命的なエラーです。(仮に宣言なしのプレーンテキストを送った場合、エラーとして扱われる。実際のところ、振る舞いは環境によりけりで、解釈したり化けたりといろいろなところに書いてあると思います) 厳密に実装されてるかどうかは、環境によると思いますが、 不安な場合は、何らかの形に変換(URL エンコード, Base64)しておけばわずらわしいことは考えなくてすみます。

参考URL:
http://www.kanzaki.com/docs/sw/http-header.html
koke21
質問者

お礼

なるほど。。 ご指摘いただいた点などを確認いたしました。 >HTTP 又は MIME が送られなかった場合 とお書きになっていますが、 こちらの付帯はどのようにすればよいものでしょうか。 XML宣言しても上手くいかなかったもので。。 よろしければご解答いただければ大変助かります! どうぞよろしくお願いいたします。

noname#137826
noname#137826
回答No.3

以下の3つのファイル(main.html, utf.html, euc.html)を使って(ローカルで)テストしてみました。それぞれのファイルはEUC-JP, UTF-8, EUC-JPで保存し、それぞれ単独では文字化けなしに表示されることを確認しました。ブラウザはIE8, Firefox3, Safari4, Opera10 (すべてWindows版) です。 結果は、IE8だけがEUC-JPファイルを読み込む部分で文字化けを起こしました。(.load()ではなく、$.ajax()を使うとまた少し結果が異なりますが、いずれにせよIE8は正しく表示できません。) IE8は、.load()で読み込むファイルは、(ローカルでは)常にUTF-8であるとして解釈するのでしょうね。つまりは、サーバからファイルを送り出す時のヘッダで文字コードを指定しない限り、jQueryでどうにかなる問題ではなさそうです。 もうひとつの解決法は、全てのファイルをUTF-8で保存することでしょうか・・・。 main.html -- <?xml version="1.0" encoding="EUC-JP"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP" /> <title>test</title> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.0/jquery.min.js" type="text/javascript"></script> <script> $(function(){ $('#utf').load("utf.html"); $('#euc').load("euc.html"); }); </script> </head> <body> <div id="utf">utf</div> <div id="euc">euc</div> </body> </html> -- utf.html -- <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>utf</title> </head> <body> <p>これはUTF-8のファイルです。</p> </body> </html> -- euc.html -- <?xml version="1.0" encoding="EUC-JP"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP" /> <title>euc</title> </head> <body> <p>これはEUC-JPのファイルです。</p> </body> </html> --

koke21
質問者

お礼

丁寧にご回答いただきまして誠にありがとうございます! いただいたとおりに試してみましたところ、 やはりIEのみ上手く表示が出来ませんでした。 EUCの文字コードでのインクルードはやはり難しいのでしょうか。 3年前くらいには割りとあったような印象があるのですが。。 ありがとうございました! とても参考になりました!

  • yuu_x
  • ベストアンサー率52% (106/202)
回答No.2

jQuery で、というのはよくわかりませんが、、、jQuery に日本語が埋め込まれてるわけじゃないので文字コードは関係ないと思いますが、 response(Text|XML) の話でしょう。(もしくは内部で、意識せずに使ってる) 手元の環境(IE5.5~IE8, Firefox3, Opera, Safari)だけですが、ヘッダを適切に送信してやれば特に問題ないみたいですね。 ヘッダを送信しないということは、HTML で meta を指定しないのと同じ、 受け側は文字コードを知る手立てがないので、文字化けも起こるでしょう。 # ヘッダを送信しても、変換されない環境の情報は知りたいですね。

koke21
質問者

お礼

おお、ご回答ありがとうございます! こちらをヒントに検索してみたのですが、 よく分かりませんでした。。 >手元の環境(IE5.5~IE8, Firefox3, Opera, Safari)だけですが、ヘッダを適切に送信してやれば特に問題ないみたいですね。 こちらの方法や、それが分かるようなサイトがありましたら、 簡単にでもご教授いただけませんでしょうか。。 どうぞよろしくお願いいたします!

  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.1

「jQuery euc」でぐぐれば 幸せになれると思う。

koke21
質問者

お礼

幸せになれませんでした;;

関連するQ&A

専門家に質問してみよう