- - PR -
Ajaxから日本語を含むパラメータ受信時の文字化け
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-04-24 21:32
はじめまして。いつもこちらの掲示板を参考にさせて頂いております。
現在、JavaScript(Ajax)とStrutsでWebアプリケーションを作成しております。 Ajaxで非同期(GET)にActionServletを呼び出し、処理した結果を下記のように 取得すると「newRow.cells[0].innerHTML」の日本語部分のみ「???」と文字化け しています。 newRow.cells[0].innerHTML = xmlHttp.responseText; 他のサイトで調べてみたところ文字コードをUTF-8に変換すれば良いとの ことでしたが、当方のアプリではJSPおよびサーブレット両者ともにデフォルトで 「UTF-8」を使用しています。 JavaScriptのencodeURIComponent()メソッドやその他の文字コード変換メソッドを 通してみましたが、上手くいきませんでした。 尚、開発環境はIBMのRational Software Developmentを使用しています。 (TOMCATではないので、日本語が通るようにフィルタがかけられません) Ajax、Java共に初心者のため、つたない説明で申し訳ないのですが、 解決策等ご存知の方がいらっしゃいましたら、ご教授願います。 | ||||
|
投稿日時: 2007-04-24 22:54
まず、確認して欲しいのが、
・出力されているHTMLがUTF-8であるか(画面右クリックでエンコードを見ればわかります) ・そもそもフォームのサブミットでは化けないのか ・それはGETなのか、POSTなのか です。 Rational Software Developmentの使い方を知らないので、なんともいえませんが、 GETで化けてPOSTで化けないようであれば、XMLHttpRequestでもPOSTで送信してみてはいかがでしょうか? | ||||
|
投稿日時: 2007-04-24 23:24
返信ありがとうございます。
下記に確認事項の返信をさせて頂きます。 ・出力されているHTMLがUTF-8であるか(画面右クリックでエンコードを見ればわかります) ⇒ はい。UTF-8になっています。 ・そもそもフォームのサブミットでは化けないのか ⇒フォームのサブミットでは化けません。AjaxのResponseで受け取った場合のみ 日本語が化けてしまいます。 ・それはGETなのか、POSTなのか ⇒現状ではGETを使用しています。POSTも使用してみましたが、同じように化けています。 以上、よろしくお願いします。 | ||||
|
投稿日時: 2007-04-24 23:31
フォームのサブミットがGETの場合に文字化けしたりしていませんか?
それと、XMLHttpRequestでのPOSTはどうやっていますか? 勘違いしやすいのがGETとPOSTとでは同じコードで送信できません。 POSTの場合は送信する値はsend関数に引き渡す必要があったり、 コンテントタイプの指定が必要だったりしますが、 そこら辺は対応していますか? #対応していたらごめんなさい・・・ | ||||
|
投稿日時: 2007-04-25 10:56
javascriptが外部ファイルになっていて、そこがUTF-8ではないとかはありませんか。 | ||||
|
投稿日時: 2007-04-25 11:43
流用したサーブレットで、responseへのsetContentTypeがShift-JISになってるとか…はないか。
| ||||
|
投稿日時: 2007-04-25 11:49
tcpmon とか packetyzer とかを使ってダンプしてみてはいかがでしょう。
http://www.atmarkit.co.jp/fjava/javatips/113jakarta020.html リクエストがおかしいのか、レスポンスがおかしいのか、どちらもおかしくなくて JavaScript 側がおかしいのかを切り分けられます。 | ||||
|
投稿日時: 2007-04-26 11:52
かつのりさん KOXさん mioさん インギさん
アドバイスありがとうございました。 JSP、JavaScript、サーブレットファイルの文字コードは全てUTF-8に統一 されているため、間違いはないかと思います。 (外国人エンジニアと協業しているのでShft-JISは使用できない環境です) かつのりさんにアドバイス頂いたようにPOSTでの通信方法が間違っていそうなので、 POSTで再度試してみたいと思います。 |
1