• ベストアンサー

javascriptで文字コード変更

いつもお世話になっております。 今回はjavascriptの文字コードについてお聞きしたいです。 現在、CGIの応答でテキストを受けて、それをjavascriptで変換して表示するというものを作っていますが、この応答に漢字、ひらがななどが入ると文字化けしてしまいます。 調べてみると、CGIの応答はshift-jisで返しているのですが、javascriptはUTF-8しか扱えないと書いてありました。 なんとか応答のCGIはShift-Jisを送り、javascriptでうまく表示できるようにしたいのですが、方法はないでしょうか? ご教授願います。

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

  • ベストアンサー
  • pick52
  • ベストアンサー率35% (166/466)
回答No.2

というか、現在のJavaScriptでは定数の文字列はエンコードが何で あっても自動的にUTF-8として処理されてしまうのでURLエンコード したりするとUTF-8のエンコードになってしまいますけど、CGIから JavaScriptに対して渡した文字列はSJISでも問題なく処理できるはず です。 (ただし、SJISの文字列をURLエンコードしたものをJavaScriptに渡した 場合、そのままではJavaScriptで処理できません) Ajaxなどでも、普通にSJIS使えますし。 それでも、UTF-8よりも不具合がでやすかったりいろいろ問題もあり ますけど。 多分、それは処理の仕方が悪いかなんかだと思うのでソース書いた 方がいいかもしれません。 あとは、OSやブラウザなどの環境も必要です。

iec1128
質問者

お礼

今回はご回答ありがとうございました。 下記のお礼に記入しているようにして解決いたしました。 文字コードが何でも使えるということがわかってよかったです。

iec1128
質問者

補足

ご回答ありがとうございます。 簡単なソースや環境は下記の質問の補足にて書きましたので確認お願いします。 >>ただし、SJISの文字列をURLエンコードしたものをJavaScriptに渡した 場合、そのままではJavaScriptで処理できません 下記補足にも書きましたが、CGIへの送信にはSJISで行い、CGI内部ではUTF-8で処理し、応答の際再度SJISにして送信しています。このことがご指摘の点に当てはまるのでしょうか? またUTF-8のまま応答を返すと、文字化けせずに表示するのですが、htmlはSJISで書いていて、javascript部分で扱ったフォームの中のみUTF-8で入れるというのは不都合は起きないのでしょうか? わかりにくいかもしれないですがご教授いただければ幸いです。 よろしくお願いします。

その他の回答 (3)

  • pick52
  • ベストアンサー率35% (166/466)
回答No.4

一応、AjaxではUTF-8を使うことを推奨しています。 (一部ではUTF-8でないとダメのように書いてあることもありますが 大抵の場合は正常に動作します) 詳細は以下のURLを見た方がいいかも。 http://jsgt.org/ajax/ref/charset_test/responsetext/seu8/sample.htm http://jsgt.org/ajax/ref/charset_test/responsetext/test_1_make_table.php http://tech.bayashi.jp/archives/entry/studyajax/2006/001288.html

iec1128
質問者

お礼

今回はご回答ありがとうございました。 下記のお礼に記入しているようにして解決いたしました。

回答No.3

文字コードを指定してください。 基本的にはどんな文字コードでも使えます。 http://okwave.jp/qa4168549.html

iec1128
質問者

お礼

今回はご回答ありがとうございました。 下記のお礼に記入しているようにして解決いたしました。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

>javascriptはUTF-8しか扱えないと書いてありました。 そんなことはないです。文字コードにあった書き方さえすればscript内で すきなコードが使えるはずです もしかしてなにかjsライブラリでも使っていますか? もしそのライブラリがUTF-8のみ対応であれば、しょうがないですが

iec1128
質問者

お礼

ご回答ありがとうございました。 CGIの方に"charset=Shift-JIS"をつけたら出来るようになりました。

iec1128
質問者

補足

普通にXMLHttpRequestやActiveXObjectを使って通信をしています。 その応答をresponseとして、以下のように処理しています。 function display() { var str = response; var cont = new Object(); cont = str.split(","); // 応答を","で分ける for (var i = 0; i < cont.length; i++) { document.getElementById(hogehoge).innerHTML = cont[i]; } } ただCGIにSJISで送信したのち、CGIの処理で一度UTF-8にしており、送信する際、再びSJISにして応答を送信しています。 firefoxでみると応答受信した際、すでに漢字の部分は文字化けしています。 OSとブラウザ  WinXP IE6.0、firefox2.0,3.0         Vista IE7.0、firefox2.0,3.0 以上の6通りの組み合わせで同じ症状が出ました。

関連するQ&A

  • xml宣言の文字コード変更

    xhtmlとcssでのコーディングを行った際、途中で「UTF-8」で作成してと言われました。 そのため、作成していたコードの冒頭をshift_jisからUTF-8にかきかえてみたところ、文字化け。ブラウザの表示をUTF-8に変えても化けたままなので、作業にならんと宣言をshift_jisに戻しました。 が、書き換えても文字化けが直りません。 宣言自体を消して保存しなおしたりもしたのですが、以前文字化けたままです。 テキストエディタで見るとちゃんとshift_jisになっているのですが、 これはどうすれば直るものなのでしょうか? 手を入れたのは以下の二行になります。(抜き出してるだけですので実際はheadタグ等を挟んでいます) 初期 <?xml version="1.0" encoding="shift_jis"?> <meta http-equiv="content-type" content="text/html; charset=shift_jis" /> ↓ UTF-8に書き換え <?xml version="1.0" encoding="UTF-8"?> <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> ご教授ねがいます。

  • 文字コードが変わってしまう

    Webページ作成関連の市販のテキストについているサンプルコードを自分のマシンにコピーして勉強しています。WindowsXPとWindows7を使っています。 たとえば、【今日問題なく使った】のに、翌日同じHTMLファイルのソースを見たら、文字コードが矢印に変わってしまっています。 改行コード変換ソフトで変換して、また元に戻して作業をしました。 翌日、他の部屋のマシン(WinXP)でそのファイルを開いたら、また文字コードが矢印に変わっていました。 詳しいことはわからないレベルですが、状況だけ書いてみました。 文字コードが変わってしまうタイミングってあるのでしょうか。関係ないかもしれませんが、書籍についてきたサンプルファイルの文字コードはUTF-8なので、文字コード変換ソフトでShift_JISに変更しました(なぜShift_JISにしたかは、特に意味はありません。UTF8がいいというのは聞いていますが、とりあえずShift_JISでやっています)。 難しい理論は理解できないと思いますが、どうしてそうなるかを教えていただける方がいたらお願いします。

  • Perlのcgiを中国語で表示可能にしたい

    OS:Windows7でサーバーはロリポップを使用しております。 Perlのcgiを「utf-8」で保存し、Perl内のhtmlも、「<meta http-equiv="Content-Type" content="text/html; charset=utf-8">」などのutf-8の設定にしていますが、ffftpでutf-8の文字コードで転送すると、「※CGI もしくは SSI が正しく動作していません。」と表示されてしまいます。 ffftpのホストの設定での、文字コードは「ホストの漢字コード Unicode(UTF-8)」、「ファイル名の漢字コード Unicode(UTF-8)」にしています。 何パターンか試してみましたが、ffftpの転送時の設定が「Unicode(UTF-8)」だと、「※CGI もしくは SSI が正しく動作していません。」と表示されるみたいです。 転送時の設定を「ホストの漢字コード 無変換(SHIFT-JIS)」、「ファイル名の漢字コード SHIFT-JIS」 にすると、cgiは動作します。但し、文字化けします。→ 黒い菱形に?マークの文字化け。 どうすれば、上記問題を解決できるでしょうか。 アドバイスをお願いします。 m(_ _)m

    • ベストアンサー
    • Perl
  • 【フォルダ名の文字コードを変換したい】

    【フォルダ名の文字コードを変換したい】 Windows Vistaです。 Windowsではフォルダ名にShift-JISを使っていますが、とあるプログラムが日本語を読み込む際、文字コードがUTF-8でないと読み込めないようで、フォルダ名に日本語を含むフォルダを参照すると文字化けしてしまいます。 なのでフォルダ名をUTF-8に変換したいです。 検索するとLinux上でShift-JISのフォルダ名をUTF-8にしたり、Windows上でもファイルの内容をShift-JISからUTF-8に変換したりする方法は見つかるのですが、Windows上でフォルダ名をUTF-8に変換する方法が見つかりません。 UTF-8に変換するとエクスプローラ上では文字化けするので、需要がないのでしょうか。 コマンドプロンプトとか苦手なので、何かフリーソフトでもあればいいのですが…

  • visual c++の文字コード判別

    現在、visual studio2010のvisual C++でメモ帳をテキストボックスに表示するプログラムを作成しています。 しかし、文字コードがASCIIで保存してあるファイルを開こうとすると、文字化けが起こります。 shift-jisなどに変換しようとすると、ほかの文字コードで保存してあるファイルを開いたときに文字化けが起こります。 文字コードがASCIIのテキストファイルを開くときのみ、shift-jisなどに変換しようと思うのですが、文字コードがASCIIであるか、そうでないかを判別できる処理があれば教えていただけないでしょうか?

  • 2つの文字コードの文字化けについて

    こんばんわ。 Linux使ってます。 わかりにくいかも知れませんが・・・ とあるHP更新ソフトを使ってるのですが、 そのHP更新ソフトが2つあり、 一つはShift_JISで自動でソースが書き出されます。 もう一つのソフトは自動でutf-8で書き出されます。 この時、バーチャルホストなので、 Apacheの設定は、noneにしてるので、 それぞれソフトで吐かれる文字コードに依存するようにしてます。 ですが、どうも、 cgiを使ってる所が文字化けしてしまいます。 utfで指定しないとダメなのかな・・・? 何か文字化けせず、 正常に表示させる方法はありますか? .htaccessなど使用も可能です。

  • 文字コードsjisをUTF8に書き換えたい

    CGIの勉強中の者です。 文字コードはSJISで保存しているCGIをUTF8コードに換えるには何が必要でしょうか? HTMLならmeta内をSJISからUTF8に変更し、TeraPadなどのテキストエディタでUTF8に保存すればオッケーなんですが。 CGIの場合はHTMLと違って、換えるには複雑なのでしょうか? CGIプログラムの中では以下の「sjis」を「UTF8」に書き換えし、UTF8で保存しましたけど、文字化けが出てます。 <meta http-equiv="Content-Type" content="text/html;charset=shift_jis"> &jcode'h2z_sjis(*contenido) &jcode'convert(*subject,'sjis'); &jcode'convert(*infor,'sjis'); &jcode'convert(*contenido,'jis'); &jcode'convert(*res_msg,'jis'); print "Content-type: text/html;charset=shift_jis\n\n"; 宜しくお願いします。

    • 締切済み
    • CGI
  • Mac(OS)の文字コードの変更方法

    こんにちは。Macについて質問させてください。 MacはG4(OSは10.3?)を使っています。MacのターミナルからUnix(AIX5.1)にTelnetで接続すると、ログオン後、漢字の出力部分で文字化けが起こります。 Macで、自分の使っている文字コードを確認出来る方法を教えて頂けないでしょうか? またAixの文字コードはShift-Jisなので Macの文字コードもShift-Jisに変換したいのですが どのようにしたらよいのでしょうか? なにとぞ宜しくお願い致します。

  • テキストファイル 文字コード変換

    Mac OSX 10.9にて、pagesを使って文章作成をしています。 この文章をポメラDM5で閲覧・編集をしたいと思っています。 DM5はテキストファイル(shift-jis)のみを扱えるので、pagesの文章を標準テキストとして書き出したものをmiで開き、文字コードを変換しています。 ところが、文字コード変換を試みてもUTF-8にしかない文字があるので変換できない旨が表示され、変換ができないファイルがいくつかあります。 具体的にどの文字がひっかかるのかがわかれば対処のしようもあるのですが、miでは表示されません。 ネット上でUTF-8にしかない文字を調べ、元の文章内を検索してみましたが、らちがあきませんでした。 そこで、お聞きしたいのですが、 1.UTF-8のテキストファイルをshift-jisに変換するソフト等 その際、文字コードに依存する文字があったら自動変換、または強制的に変換(その文字だけ文字化けするなど)するもの ※なお、multi text converterというソフトはエラーで落ちてしまい、使えませんでした。 http://www.rk-k.com/software/mtc 2. テキストファイル中のUTF-8にしかない文字を発見して教えてくれるソフト等 3. その他の解決手段 のいずれか、有用なものを教えていただけると幸いです。 なお、windows系のPCも持っていますのでソフト等はMacにこだわりません。 できれば無料のソフトが良いのですが、難しければ有料のものでも構いません。 よろしくお願いいたします。

    • ベストアンサー
    • Mac
  • fedoracore5 文字コードで悩んでます。(apache)

    こんにちは。今fedora core5でapacheをweb serverでHPを作成中です。 昔作成したHPを友達のweb serverにUPしてくれていたので、ツールを使って自分の作成していたHPを取得しました。それを今の私のweb serverにUPしたところ文字コードの違いからか文字化けしてしまいます。 fedora coreの文字コード UTF-8 apacheの文字コード UTF-8 取得してきたHP ソース内に charset=Shift_JISとなっておりました。 ソース内にこのうように書かれているとブラウザではShift_JISでしか見れないのでしょうか? HPをすべてUTF-8に変換したいのですが、量が多すぎて一つ一つShift_JISをUTF-8に書き換える事は困難です。 何か良い方法があれば教えてください。 よろしくお願いいたします。