[現象]
携帯電話からJSPで画面(A)を表示をさせ、その画面で入力した文字をサーバ側に返します。
サーバで受け取った文字を利用した画面(B)を携帯で表示させると文字が化けてしまいます。
半角英数字などは正常に表示されるのですが、全角表記の文字は「?」で表示されます。
文字化けしてしまうキャリアはauのみで、docomo、vodafoneは正常に表示できます。
ちなみにIEでも正常に表示できました。
[動作環境]
Apache 1.3.26
Tocmat 4.06
java 1.4.1.02
Win2000Sever SP4
サーブレットでは以下のようにShiftJISからUnicodeに変換するメソッドをかましています。
private static String convertString(String s) {
if(s == null) {
return null;
}
try {
return new String(s.getBytes("8859_1"), "JISAutoDetect");
} catch (UnsupportedEncodingException e) {
return s;
}
}
JSP側でも以下のようにShiftJIS対応をしているはずなのですが・・
<%@page contentType="text/html; charset=Shift_JIS"%>
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html;CHARSET=SHIFT_JIS">
<TITLE>XXXXXXX</TITLE>
</HEAD>
<BODY>
はじめに表示させる画面(A)では全角なども正常に表示できているので、ブラウザ→Tomcatの間で
問題が発生しているのではないかと思うのですが、1日潰しましたが解決できません。
auの携帯はW21CAという機種で比較的新しいものです。
どなたかご教授お願いします。
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
#4です。
何度も失礼します。そのページが本番で動作しているのかどうかわからないのですが、好きにしていいようならとりあえず、
request.getParameter()で取得したもののコードを表示してしまったらどうでしょうか?
for(int i = 0 ; i < s.length() ; i++){
String ss = Integer.toHexString((int)s.charAt(i));
//ssを出力
}
それと、HTTPヘッダーはCONTENT_TYPEがあやしいと思われるので、これの内容も一緒に出力してしまえばどうでしょうか?
*興味ある事象ですので、結果がわかったら、是非ご報告ください。
No.4
- 回答日時:
#3です。
処理を分岐するにしても、なぜそうなっているのか原因を調べた方がいいと思います。
その上で分岐するしかなければ仕方ないですが、もしかしたら他に方法が見つかるかもしれません。
単純に考えるとバグも発生するかもしれませんし。
まず、送られてくる文字がどのように送られているのか、
HTTPヘッダーはどうなっているのか、をうまくいく場合と
いかない場合の両方を調べてみる必要があると思います。
そうですね。
Bonjinさんに教えていただいた「Ethereal」にチャレンジしていますが、
まだ時間がかかりそうです。
なんとか、原因究明できるように頑張ってみます。
ご回答ありがとうございました。
No.3
- 回答日時:
あまり詳しくはないですが、
request.setCharacterEncoding("Windows-31J");
としてからrequest.getParameter()を呼べばいいのでは?
その場合はconvertString()は使ってはいけません。
ご回答ありがとうございます。
ご指摘の通り変更してみました。
auは正常に表示されましたしたが、その他はキャリアではrequest.getParameter()直後に文字化けしてしまいますね。
やはり、処理を分岐する以外にau,DoCoMo,Vodafoneに対応することは困難ですかね。残念ですけど・・。
No.2
- 回答日時:
METAタグの内容なのですが、
CONTENT="text/html;CHARSET=SHIFT_JIS"
↓
content="text/html; charset=Shift_JIS"
と直してみてください。
元情報を見つけられなかったのですが
1.「;」の後ろにある空白は必須
2.「charset」は小文字(必須?)
3.文字コード名はShift_JIS(区別はされないはず)
サーバからのレスポンスヘッダでContentTypeが指定されているので
Metaタグは無視されているはずなのですが、念のために試してみてください。
ご指摘の通りMETAタグ内容を変更しましたが、やはりサーバ側で変換メソッドをかました直後には
「?」となってしまいました。
ご返信ありがとうございました。
No.1
- 回答日時:
とりあえずEtherealなどでパケットをキャプチャして、携帯から送られてくる文字コードやサーバが実際に返している文字コードを調べ
てみては?Etherealは使用したことがないですが、チャレンジしてます。
補足なのですが、バイトデータに変換するメソッド[convertString]を使用しなかった場合(request.getParameter での取得のみ)にはauの携帯では正常に表示できました。
しかし、その他のキャリアやIEでは完全に文字化けしていました。
au用に処理の分岐をさせないといけないのでしょうか。
とりあえず、Etherealをためさせてもらいます。有難うございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript HTMLでJavaScriptを使ってパスワードの強化判定のプログラムを作成しています。 一通り作っ 2 2022/10/19 01:41
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- HTML・CSS スクロールすると追従する画像のコードを書いているのですが、追従する画像の大きさの調節が上手くいきませ 2 2022/04/18 12:52
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel VBA 見本通りに...
-
ローマ数字などの文字化け対策...
-
C#のシリアル通信プログラムで...
-
php でtabを空白に変換して表示...
-
stray '\\240' in programのエ...
-
Pythonの勉強を始めました。バ...
-
テキストフィールドでの全角チ...
-
カラムの末尾にスペースが入る
-
半角スペースを含む文字列を変...
-
ソースコードの改行文字は何に...
-
Eclipseの空白が変な...
-
JavascriptでIMEのON,OFF制御
-
ASCII文字列以外を検出する正規...
-
XMLを作成してもタグしか表示さ...
-
テキストエリア内の改行禁止
-
AfterEffectsでイージーイーズ...
-
H1タグに改行の<br>を使う
-
プルダウン(リストボックス)の...
-
自分のサイトを開いた時にウィ...
-
プルダウンメニューの開く方向...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel VBA 見本通りに...
-
ASP.NET TextBox 入力制限
-
ASCII文字列以外を検出する正規...
-
Pythonの勉強を始めました。バ...
-
半角スペースを含む文字列を変...
-
php でtabを空白に変換して表示...
-
JavascriptでIMEのON,OFF制御
-
ホームページ制作でコピーライ...
-
stray '\\240' in programのエ...
-
氏名の入力チェックに全角スペ...
-
ソースコードの改行文字は何に...
-
ボタンコントロールのTEXT...
-
入力されたテキストが、全角か...
-
Eclipseの空白が変な...
-
指定した文字を始点にスペース...
-
C#のシリアル通信プログラムで...
-
Firefoxでのテキストエリアに入...
-
JSONパース時に改行があるとエ...
-
JSで全角英数記号を半角英数記...
-
カラムの末尾にスペースが入る
おすすめ情報