• 締切済み

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でエンコード という流れを取りたいです。 何かいい方法がありましたら教えてください。 よろしくお願いいたします。

みんなの回答

  • luka3
  • ベストアンサー率72% (436/600)
回答No.2

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"); で事足りています。

回答No.1

ライブラリを作っている方がいらっしゃるので、それを使わせてもらうのはいかがでしょうか。 ブックマークレットだとすると無理そうですが…。

参考URL:
http://polygon-planet-log.blogspot.jp/2012/04/javascript.html

関連するQ&A

専門家に質問してみよう