いつもお世話になっております。
今回はjavascriptの文字コードについてお聞きしたいです。
現在、CGIの応答でテキストを受けて、それをjavascriptで変換して表示するというものを作っていますが、この応答に漢字、ひらがななどが入ると文字化けしてしまいます。
調べてみると、CGIの応答はshift-jisで返しているのですが、javascriptはUTF-8しか扱えないと書いてありました。
なんとか応答のCGIはShift-Jisを送り、javascriptでうまく表示できるようにしたいのですが、方法はないでしょうか?
ご教授願います。
No.2ベストアンサー
- 回答日時:
というか、現在のJavaScriptでは定数の文字列はエンコードが何で
あっても自動的にUTF-8として処理されてしまうのでURLエンコード
したりするとUTF-8のエンコードになってしまいますけど、CGIから
JavaScriptに対して渡した文字列はSJISでも問題なく処理できるはず
です。
(ただし、SJISの文字列をURLエンコードしたものをJavaScriptに渡した
場合、そのままではJavaScriptで処理できません)
Ajaxなどでも、普通にSJIS使えますし。
それでも、UTF-8よりも不具合がでやすかったりいろいろ問題もあり
ますけど。
多分、それは処理の仕方が悪いかなんかだと思うのでソース書いた
方がいいかもしれません。
あとは、OSやブラウザなどの環境も必要です。
この回答への補足
ご回答ありがとうございます。
簡単なソースや環境は下記の質問の補足にて書きましたので確認お願いします。
>>ただし、SJISの文字列をURLエンコードしたものをJavaScriptに渡した
場合、そのままではJavaScriptで処理できません
下記補足にも書きましたが、CGIへの送信にはSJISで行い、CGI内部ではUTF-8で処理し、応答の際再度SJISにして送信しています。このことがご指摘の点に当てはまるのでしょうか?
またUTF-8のまま応答を返すと、文字化けせずに表示するのですが、htmlはSJISで書いていて、javascript部分で扱ったフォームの中のみUTF-8で入れるというのは不都合は起きないのでしょうか?
わかりにくいかもしれないですがご教授いただければ幸いです。
よろしくお願いします。
今回はご回答ありがとうございました。
下記のお礼に記入しているようにして解決いたしました。
文字コードが何でも使えるということがわかってよかったです。
No.4
- 回答日時:
一応、AjaxではUTF-8を使うことを推奨しています。
(一部ではUTF-8でないとダメのように書いてあることもありますが
大抵の場合は正常に動作します)
詳細は以下のURLを見た方がいいかも。
http://jsgt.org/ajax/ref/charset_test/responsete …
http://jsgt.org/ajax/ref/charset_test/responsete …
http://tech.bayashi.jp/archives/entry/studyajax/ …
No.3
- 回答日時:
No.1
- 回答日時:
>javascriptはUTF-8しか扱えないと書いてありました。
そんなことはないです。文字コードにあった書き方さえすればscript内で
すきなコードが使えるはずです
もしかしてなにかjsライブラリでも使っていますか?
もしそのライブラリがUTF-8のみ対応であれば、しょうがないですが
この回答への補足
普通に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が見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
階層別の組織図の自動作成について
-
食材の期限を管理するためにGAS...
-
前回の質問の続き function mov...
-
このプログラムに、王手をかけ...
-
前回の質問の続き function mou...
-
このプログラムに王様の逃げ道...
-
ビデオのJSについて
-
鍵盤アプリで、スマホの画面に...
-
<div>のタッチ状態を維持したま...
-
jQueryでシンセサイザーを作っ...
-
プログラミング 学習
-
HTMLでサブフレームから親のス...
-
ジャバスクリプトについて。
-
プログラムについて。
-
Q&A掲示板の入力フォームに文字...
-
メールフォームの日付入力フォ...
-
二次元配列を使って順位をだす...
-
iOSのみダブルタップが必要
-
jsで質問です。 displayプロパ...
-
var exports = exports || {}; ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
WebページまたはHTMLソースから...
-
【JavaScript】ソースのコメン...
-
WSH をC#で作ることは可能でし...
-
シェルスクリプト
-
Unityでジャンプ機能を実装した...
-
javascriptでexcel閉じる
-
変換テーブルを使った、文字列...
-
javascriptで日付を加算して表...
-
文字列圧縮_
-
リアルタイム時計をミリ秒まで...
-
六曜カレンダー
-
コメント削除/圧縮/難読化
-
Ajax.Updaterでjavascriptを記...
-
リロードしないと正常に表示さ...
-
Javascriptで特殊文字を置換す...
-
JSPの処理の途中で、JavaScript...
-
VB.NET2003 テキストボックスに...
-
gas 全角数字を半角数字に変換
-
初心者です。gulpでコンパイル...
-
if(1){...}とはどういうことで...
おすすめ情報