jQuery.ajax で overrideMimeType する方法
英語翻訳 - エキサイト翻訳のサービスを利用して英日翻訳するUbiquityコマンド。
このサービス、どうも翻訳後の文字コードがShift_JISで文字化けしてしまうという事が書かれていたので、ブクマコメントにてjQueryは知らんけど、XMLHttpRequestのoverrideMimeTypeでcharsetを指定すれば文字化けはしないはずですよ
とアドバイスした。
それを受けてid:IkeTさんが、jQueryではできそうもないからXMLHttpRequestを直に叩いたよ、と追記してくれました。
上記、記事を受けて、jQueryでスクレイピングする時の文字化け対処法 - 不動産屋のラノベ読みでid:Lhankor_Mhyさんが、jQueryでも出来るよ!的な記事を書いている。
ただ、この記事での書き方では
ただ、このoverrideMimeTypeはコマンドラインを閉じでも保持され続けるようで*2、なんか、他のコマンドに悪影響が出そうでなんというか気持ち悪いですね。
jQueryでスクレイピングする時の文字化け対処法 - 不動産屋のラノベ読み
だそうだ。
そいで、ちょっと興味を持ってjQueryのコードを見てみた。
前置きが長くなったけど、結論として出来る。jQeury.ajax
メソッドの定義は以下の様になっている。
jQeury.ajax = function(s){ //... var xml = window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest; // ... if (s.beforeSend){ s.beforeSend(xml); } // ... xml.send(s.data); }
よってメソッドに渡すオブジェクトのメンバにbeforeSend
を入れてあげれば良い。
jQuery.ajax({ // ... beforeSend: function(xhr){ xhr.overrideMimeType("text/html;charset=Shift_JIS"); }, // ... });