- 締切済み
JavaScriptでの文字列変換
表示しているWebページの情報収集をするプログラムを作っています。 情報収集したいWebページを開いて、ブックマークツールバーにあるJavascript関数へのリンクをクリックすると表示しているページの情報(とりあえずは、URLとタイトルだけです。)を取り出してAjaxを使って、PHPプログラムにデータを送るというプログラムを作成中です。 情報収集先のWebページがUTF-8でエンコードされている場合、日本語でもうまく情報を送れるのですが、Shift-JIS等だとタイトルがうまくPHP側に送れません。 サーバー側に送信するときのエンコードはencodeURIComponent関数を使って行っています。 UTF-8のみ対応ということで、困っています。 Javascript側で、Shift-JIS、EUC-JPコードをUTF-8にすることは可能でしょうか? 自分が作成したWebページ以外で使う可能性もあるので、Webページの文字コードを統一することはできません。 また、個人的な事情でPHP側で何とかするというのも避けたいです。 できれば、Javascript上で 1.文字コードの判定 2.Shift-JISもしくはEUC-JPなら、UTF-8に文字コード変換 3.encodeURIComponentでエンコード という流れを取りたいです。 何かいい方法がありましたら教えてください。 よろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- luka3
- ベストアンサー率72% (436/600)
JavaScript上では内部的にすべてUNICODEで処理されると思ってました。 Shift_JISの「あいうえお」もUTF-8の「あいうえお」も、 alert(encodeURIComponent(document.title)) するとどちらも %E3%81%82%E3%81%84%E3%81%86%E3%81%88%E3%81%8A と表示されます。(Win7+IE9) ブラウザやOSで違うんですかね? とりあえず私が自分で設置しているオンラインブックマークも、bookmarklet+PHPでやっていますが、php側では $title = mb_convert_encoding($title, "UTF-8", "auto"); で事足りています。
- tenderfeel
- ベストアンサー率56% (215/379)
ライブラリを作っている方がいらっしゃるので、それを使わせてもらうのはいかがでしょうか。 ブックマークレットだとすると無理そうですが…。