• 締切済み

文字化け

JSPで取ったデータをServletがGetParameterしています。 文字化け防止のコーディングは以下のようにしています。 String adr = request.getParameter("adr"); //住所 if(adr !=null && adr.equals("")==false){ //文字化け防止(日本語変換) adr = new String(adr.getBytes("8859_1"), "JISAutoDetect"); }else{ adr = ""; } が、全角のハイフン(-)だけが 文字化けしてしまいます。 ?になってしまいます。 なにかいいページかヒントがありましたら 教えてください。

  • Java
  • 回答数2
  • ありがとう数1

みんなの回答

  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.2

> 具体的にはどのようにしたらいいのでしょうか?? 例えば、ShiftJIS で記述されているページのフォームから submit されている のであれば、 adr = new String(adr.getBytes("iso-8859-1"), "Shift_JIS"); のように ShiftJIS に変換することを明示的に書く、ということです。

  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.1

上手くいくかどうかは分かりませんが、JISAutoDetect ではなく、明示的に 文字エンコードを指定するというのはどうですか? 後、8859_1 というのは、正式なエンコード名でしょうか? iso-8859-1 ではなくて?

suigaku
質問者

補足

回答ありがとうございます。 >JISAutoDetect ではなく、明示的に >文字エンコードを指定するというのはどうですか? 具体的にはどのようにしたらいいのでしょうか??

関連するQ&A

  • DBから取得したデータの文字化け

    Java初心者です。 (確認したい内容) ServletからMySQLのデータを取得したResultSetの項目で、2バイト文字が文字化けしていました。 私自身で調査した結果、 str = new String(str.getBytes("ISO-8859-1"), "JISAutoDetect"); ※str…文字化けしている項目 のコーディングで文字化けが解消されました。 しかし、この対応だと全ての2バイト文字に対して、このコーディングを入れなければなりません。 これはスタンダードなコーディングなんでしょうか? それとも環境周りの設定一発で不要になるものなんでしょうか? 私自身の周りに先生がいないため、自分の書いてるコーディングに自信がありません。 ご意見よろしくお願いします。 (環境) WinXP-Pro-SP1 j2sdk4.1.2_05 Tomcat4.1.24 Eclipse2.1.3 MySQL4.1.7

    • ベストアンサー
    • Java
  • 困ってます。

    文字化けについて分からない事があります。 環境は RedHatLinux7.2, Postgresql7.1, Tomcat3.2.4, JDK1.4.0 です。 HTMLフォームで入力されたパラメータをサーブレットで受け取り、そのパラメータをDBのテーブルにSQLのINSERT文でデータを追加する際に日本語の部分(例:氏名)が文字化けしてしまいます。 文字化けの防止策として、 (1)String KANJINAME = new String(request.getParameter("KANJINAME").getBytes("8859_1"), "JISAutoDetect"); (2)String KANJINAME = new String(request.getParameter("KANJINAME").getBytes("8859_1"), "EUC-JP"); としても、文字化けしてしまいました。 今までサーブレット、JSP等で上記の(1)、(2)のような方法で文字化けを防いできたのですが、今回のようにDBのテーブルにInsert文で日本語を含んだデータを追加しようとすると文字化けしてしまいました。 これはコーディングの問題なのでしょうか?それともTomcat,Linux,Postgresqlに何らかの設定等が必要なのでしょうか? もし何か分かることがありましたら、ご教授お願い致します。

  • DBへ入出力する文字が文字化けしてしまいます。

    Urizakaと申します。 さて、現在Win2000+JBuilder4.0を使い、WinNTにあるDB(SQL-Server)へ とデータを出入力するというJSPの開発をしているのですが、この時になぜか DBへ入出力する日本語のデータが文字化けしてしまいます。 doGet、doPost部分で、入出力したデータに対して  (new String(request.getParameter("×××").getBytes("8859_1")); という雑誌に載っていた処理を加えてみたのですが駄目でした。 すみませんが、どなたか文字化けを防止する方法をご存知でしたら教えて ください。宜しくお願いします。

    • ベストアンサー
    • Java
  • JBuilderの文字化け

    JBuilderでサーブレットでパラメータを渡す際に日本語が文字化けしてしまいます。 Enumeration enum=request.getParameterNames(); while(enum.hasMoreElements()){ String key=(String)enum.nextElement(); String value=new String(request.getParameter(key).getBytes("8859_1"),"JISAutoDetect"); out.println(value); } ソースは上記のようになっていますが日本語を表示できません。直す方法がわかる方どうかよろしくお願いします。

  • 文字化けします

    またまた質問で申し訳ないんですが、よろしくお願いします。 Servletで表示させる文字が化けます。 ServletのdoGet()を呼び出しています。 ServletをURLにて直接呼び出しているので、doGetで間違いないと思います。記述としては、 response.setContentType(text/html;charset=Shift_JIS); と記述しています。 過去の質問等も調べて、byteに変換してJISAutoDetectを指定しても直りませんでした。 str = new String(str.getBytes("iso-8859-1"), "JISAutoDetect")としました。 8859-1も、同様に駄目でした。 そして、tomcatを起動した時に出るDos窓に 「Unsuported encoding: Shift_JIS」 と出ているのですが、tomcat3-1-4ではサポートされてないのでしょうか?? なんとか、解決策ってないでしょうか? 教えてください。よろしくお願いします。

  • 文字コード

    少し、聞かせてください。 今、WEBアプリケーションを作っています。 HTMLからのリクエスト文字を受け取りServletで処理を考えています。 そこで、 String para = request.getParameter(para); String param = new String(para.getBytes("8859_1","JISAutoDetect"); で、8859_1,Shift_JIS,EUC-JP,ISO-2022-JP の Unicode 変換することが できるのは、分かりました。 では、この HTML からのリクエスト文字が、どのタイプの文字コード でかかれているかを検出できるのでしょうか? 自分では、バイト列をつかさどる方法が浮かぶのですが・・・。 HPでもかまいませんので、教えてください。

    • ベストアンサー
    • Java
  • 文字化けします。

    お世話になります。 ソケットでサーバとクライアントを接続しています。 コーディングの概略は次の通りです。 【クライアント】 PrintWriter out = new PrintWriter(socket.getOutputStream(), true); BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream(),"EUC_JP")); out.println("かきくけこ"); System.out.println(in.readLine()); 【サーバ】 PrintWriter out = new PrintWriter(socket.getOutputStream(), true); BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream(),"Shift_JIS")); String inputLine; while ((inputLine = in.readLine()) != null) { System.out.println(inputLine); out.println(inputLine); //←これはクライアントでも文字化けしない。 String s1 = "あいうえお"; String u1 = new String(s1.getBytes("xxxxx"), "yyyyy"); out.println(u1); //←文字化けする。 } お伺いしたいのは文字コード変換についてです。 サーバ:RedhatLinux クライアント:Windowsでして、 サーバ側コーディングの String s1 = "あいうえお"; としている文字列を クライアント側の // 読み込んだデータを表示 System.out.println(in.readLine()); で表示したいのですが、文字が化けて(????←このようになります)困っています。 文字コード変換しなければいけないと思うのですが、 getBytesを使うのでしょうか? もしgetBytesを使うならどのように書けばいいのかがわかりません。 分かりにくい説明で申し訳ありませんが、 ご教授ください。宜しくお願いします。

    • ベストアンサー
    • Java
  • 文字化け対策について

     JSPに文字コードを指定しているにも関わらず、  「Java側でUTF-8の文字コードを指定してあげなければ、画面遷移した画面遷移先で文字化けが起こってしまう。」という状況なのですが、これの解決方法は無いものでしょうか? 【文字エンコード状況】 ●JSP  JSP側では、画面遷移元、画面遷移先の両方とも 文字コード「UTF-8で指定」しています。 <% page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> ●Java  Java側では、  response.setContentType("text/html; charset=UTF-8");//コンテンツタイプ  request.setCharacterEncoding("UTF-8"); //コード変換    という2点をコード変換として記述しています。 【値受け渡し状況(画面表示状況)】 ●1 画面遷移元 画面1(JSP)  <input type="text" value="あいうえお" name="name1"> ●2 java(servlet)  → 画面1のname1の“あいうえお”を受取る  String strName = new String(request.getParamete("name1")); request.setAttribute("name", strName);    ●3 画面遷移先 画面2(JSP) → “あいうえお”を表示  <%= (String)request.getAttribute("name1") %>            画面状況:文字化けしている。[ォ・・サウ」(といった感じです)   ●現状の解決方法  ここで、文字化けの解決方法として、  画面1のリクエストをゲットする際に、 java(servlet)での、文字の受け取り方の記述を変更しました。  String strName = new String(request.getParamete("name1"));    から    String struserName = new String(request.getParamete("name").getBytes("ISO-8859-1"),"UTF-8");    という風に「 .getBytes("ISO-8859-1"),"UTF-8") 」 を付与してやることで、回避でききました。が、これで解決策としては妥当でしょうか?(正しいでしょうか?)    気にかかっているところが、どうもこのやり方が強引に文字を変換しているようにしか思えませんでして(実際のところは正しいのかもしれませんが・・・)このまま値を渡してやっていいのか判別が付かずに困っています。    この方法でも大丈夫でしょうか?  特別、何か問題というのはありませんでしょうか?

    • ベストアンサー
    • Java
  • 特定の携帯による文字化け

    [現象] 携帯電話から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という機種で比較的新しいものです。 どなたかご教授お願いします。

  • servletからjspへの遷移時に文字化け

    質問します。 用件:servletからjspに遷移する際に文字化けが発生します。 環境: Eclipse3.7 java6 ApacheTomcat7.0 フレームワークはなし 内容: フォワードでTest.jspに遷移します。 RequestDispatcher requestdispatcher = request.getRequestDispatcher("/Test.jsp"); requestdispatcher.forward(request, response); Test.jspに遷移すると、Test.jspの「<body>テスト</body>」がブラウザ表示時に文字化けします。 (英数字は化けません。) servletを使用せず、Test.jspに直接アクセスすると文字化けが起きません。 servletで、Test.jspで適当なhiddenを作成し、servletでgetParameterをSystem.out.printしても 文字化けなどはおきません。 また、RequestDispatcherでは文字化けが起こりますが、 response.sendRedirect("/Test.jsp"); だと文字化けがおきません。 現状、sendRedirectとsessionを使用して値の受け渡しを行っておりますが、 RequestDispatcherを使用したいので困っております。 また文字コードは javaファイルそのものはSJIS jspは<%@ page language="java" contentType="text/html; charset=SJIS" %> となっております。 わかりにくい文章で申し訳ありませんが、ご回答の程よろしくお願いします。

    • ベストアンサー
    • Java

専門家に質問してみよう