- PR -

Ajaxから日本語を含むパラメータ受信時の文字化け

1
投稿者投稿内容
Zou
会議室デビュー日: 2007/04/24
投稿数: 7
投稿日時: 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共に初心者のため、つたない説明で申し訳ないのですが、
解決策等ご存知の方がいらっしゃいましたら、ご教授願います。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2007-04-24 22:54
まず、確認して欲しいのが、

・出力されているHTMLがUTF-8であるか(画面右クリックでエンコードを見ればわかります)
・そもそもフォームのサブミットでは化けないのか
・それはGETなのか、POSTなのか

です。

Rational Software Developmentの使い方を知らないので、なんともいえませんが、
GETで化けてPOSTで化けないようであれば、XMLHttpRequestでもPOSTで送信してみてはいかがでしょうか?
Zou
会議室デビュー日: 2007/04/24
投稿数: 7
投稿日時: 2007-04-24 23:24
返信ありがとうございます。
下記に確認事項の返信をさせて頂きます。

・出力されているHTMLがUTF-8であるか(画面右クリックでエンコードを見ればわかります)
⇒ はい。UTF-8になっています。

・そもそもフォームのサブミットでは化けないのか
⇒フォームのサブミットでは化けません。AjaxのResponseで受け取った場合のみ
日本語が化けてしまいます。

・それはGETなのか、POSTなのか
⇒現状ではGETを使用しています。POSTも使用してみましたが、同じように化けています。

以上、よろしくお願いします。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2007-04-24 23:31
フォームのサブミットがGETの場合に文字化けしたりしていませんか?
それと、XMLHttpRequestでのPOSTはどうやっていますか?

勘違いしやすいのがGETとPOSTとでは同じコードで送信できません。
POSTの場合は送信する値はsend関数に引き渡す必要があったり、
コンテントタイプの指定が必要だったりしますが、
そこら辺は対応していますか?
#対応していたらごめんなさい・・・
KOX
大ベテラン
会議室デビュー日: 2004/08/23
投稿数: 142
投稿日時: 2007-04-25 10:56
引用:

Zouさんの書き込み (2007-04-24 21:32) より:
他のサイトで調べてみたところ文字コードをUTF-8に変換すれば良いとの
ことでしたが、当方のアプリではJSPおよびサーブレット両者ともにデフォルトで
「UTF-8」を使用しています。


javascriptが外部ファイルになっていて、そこがUTF-8ではないとかはありませんか。
mio
ぬし
会議室デビュー日: 2005/08/25
投稿数: 734
お住まい・勤務地: 神奈川県
投稿日時: 2007-04-25 11:43
流用したサーブレットで、responseへのsetContentTypeがShift-JISになってるとか…はないか。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2007-04-25 11:49
tcpmon とか packetyzer とかを使ってダンプしてみてはいかがでしょう。
http://www.atmarkit.co.jp/fjava/javatips/113jakarta020.html

リクエストがおかしいのか、レスポンスがおかしいのか、どちらもおかしくなくて JavaScript 側がおかしいのかを切り分けられます。
Zou
会議室デビュー日: 2007/04/24
投稿数: 7
投稿日時: 2007-04-26 11:52
かつのりさん KOXさん mioさん インギさん
アドバイスありがとうございました。

JSP、JavaScript、サーブレットファイルの文字コードは全てUTF-8に統一
されているため、間違いはないかと思います。
(外国人エンジニアと協業しているのでShft-JISは使用できない環境です)

かつのりさんにアドバイス頂いたようにPOSTでの通信方法が間違っていそうなので、
POSTで再度試してみたいと思います。

1

スキルアップ/キャリアアップ(JOB@IT)