半角文字と全角文字のencodeのちがい

このQ&Aのポイント
  • JSP-Servletにて、半角文字と全角文字のエンコードの違いについて質問です。
  • 質問者は、JSPでURLEncoder.encodeを使用して半角の「ア」と全角の「あ」をエンコードし、Servletに送信しようとしています。
  • しかし、半角の「ア」は正しくエンコード、デコードされているのに対し、全角の「あ」は正しくデコードされないとのことです。
回答を見る
  • ベストアンサー

半角文字と全角文字のencodeのちがい

お世話になります。 Linux JSP-Servletにて開発を行っているのですが。 JSPにて、半角の「ア」と全角の「あ」をURLEncoder.encodeでエンコードし、Servletに送信し、 Servlet内でURLDecoder.decodeでデコードしようとしているのですが、半角の「ア」はうまくencode,decodeされている(デバッグで出力すると「ア」と表示されている)のですが、全角の「あ」はうまくdecodeして「あ」と出力されません、URLEncode、URLDecodeは全角文字では使用できないのでしょうか? Linuxにて全角日本語を扱うときの方法について ご存知のかたよろしくお願いします。

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

質問者が選んだベストアンサー

  • ベストアンサー
  • mojimojio
  • ベストアンサー率51% (14/27)
回答No.1

JDK1.4をお使いでしたら、文字エンコーディングを指定してencode/decodeを行ってみるとどうでしょうか。 http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/net/URLEncoder.html 1.3以前はここで文字エンコーディングが指定できなかった(常にプラットフォームのデフォルトが使われていた)ので、例えば Windows <-> LinuxでURLエンコードした文字列のやりとりを行おうとすると文字化けがおきました。 ただ、takataka111さんの場合、JSPとServletが同じLinux上で動いているのであれば、デフォルトエンコーディングも同じで問題なさそうな気もしますが…。 JSPって実は、ContentTypeに応じてデフォルトエンコーディングを書き換えているのかも。(注: よく分かってないので推測です) 1.4が試せなければ、エンコード側とデコード側で文字エンコーディングが一致しているかどうか確かめることをお勧めします。 同じ日本語文字列をString#getBytesして比較してみるとか。

takataka111
質問者

お礼

ありがとうございました、なかなか回答が無かったもので あきらめかけておりました、とりあえずjavaScript機能の escape()とunescape()を使用してエンコードしてみましたところうまくいきました、ありがとうございます。

関連するQ&A

  • サーブレット-サーブレットの通信で文字列を送りたいのですが

    サーブレット間の通信で文字列(String)を送りたいのですが うまく受け取れません。 URLEncoder.encodeをつかって変換して送り、 URLDecoder.decodeで受けとってます。お願いします。

  • 半角→全角変換

    数値、記号、カナのすべてを半角から全角に変換したく Encode::JP::H2Zを利用しサンプルプログラムを書いてみました。 セーブは、s-jisで行っているのですが以下のコードを試しましたがまったく変換されません。何処がいけないのでしょうか? 以下を実行すると、 h2z: 012ABCabc!@#ア??ガダパ h2z: となってしまいます。 #!/usr/bin/perl use Encode; use Encode::JP::H2Z; my $str_h = ' 012ABCabc!@#アイウガダパ'; my $str_2 = '  012AbCabc!@#アイウガダパ'; my $char_conv; $char_conv = Encode::encode("euc-jp", $str_h); Encode::JP::H2Z::h2z(\$char_conv); $char_conv = Encode::decode("euc-jp", $char_conv); print " h2z:" . $char_conv . "\n"; $char_conv = Encode::encode("euc-jp", $str_h2); Encode::JP::H2Z::h2z(\$char_conv); $char_conv = Encode::decode("euc-jp", $char_conv); print " h2z:" . $char_conv . "\n";

    • ベストアンサー
    • Perl
  • バッチファイル内に含まれる全角文字を,エンコードしてすべて半角文字で記

    バッチファイル内に含まれる全角文字を,エンコードしてすべて半角文字で記述する事はできないでしょうか。漢字等を,依存文字を含まないASCII文字であらわしたいのです。HTMLでいうHTMLエンティティのように……。 ただしエンコードされた文字列をコマンドでデコードするというような面倒な処理過程があっても結構です。

  • BASE64による全角文字のエンコード・デコードのコーディング(VB)

    こんにちは、初めて質問します。 私は現在BASE64(VB)を制作中の者です。半角英数のエンコード・デコードのコーディングは完成したのですが、全角文字となると手も足も出ない状態です。 そこで、これのついて御存知の方、全角文字のエンコード・デコードのコーディング方法を教えて下さい。 サンプルコードも見せていただければ幸いです。 宜しくお願いします。

  • URLエンコード(JavaScript)をデコード(JSP)する方法

    JavaScriptでescapeでエンコードした文字列をJSPで取得しデコードするにはどのようにしたらよいのでしょうか? JavaScriptで言うところのunescapeにあたるメソッドはJavaでは何になるのでしょうか? URLDecoder.decodeを利用して String P = ""; P = URLDecoder.decode("%u304A%u306F%u3088%u3046","UTF-8"); としていますが、上手くデコード出来ません。

    • ベストアンサー
    • Java
  • javaでエンコードがうまくいかない

    ウエダをs-jisにエンコードしたいのですが、うまくいきません。 エンコードフォーム(http://home.kendomo.net/board/decode/decode.php )使用 結果:%83E%83G%83_ java( String urlu = URLEncoder.encode(url , "SJIS");)使用 結果:%83%45%83%47%83%5F エンコードされた出力結果が異なります。 なぜでしょうか? また、エンコードフォームのエンコード形式(SJIS)でエンコードしたいのですが、 どうしたらよいでしょうか? もし、JAVAでできないなら、EXCELやフリーソフトで エンコードしたいのですが、何かよい手はないでしょうか? ご存知の方教えてください。宜しくお願い致します。

    • ベストアンサー
    • Java
  • エンコードについて

    URLエンコードを使用してデーターの受け渡しをしようと思っているんですが。 1ページ目 $cc4=urlencode("ソ"); echo "エンコード={$cc4}<BR>"; 2ページ目 $cc5=urldecode($cc4); echo "デコード={$cc5}"; カタカナの『ソ』が入るとちゃんと受け渡しが出来ません。 どうしたらいいでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • Ethnaを利用したURLパラメータのマルチバイト文字とエンコード処理

    前画面よりhttp://localhost/?action_abc=true&test=あいうえお という画面へアクセスした時、 abc画面でtestパラメータを出力すると何故かShift_JISで表示されてしまい、 文字化けを起こしてしまいます。 (前画面・abc画面のactionやview、テンプレートはEUC-JPで作成、 URLパラメータにはurlencode()、urldecode()を使用) その為、出力する前にmb_convert_encoding()を使用しなければならない羽目になっています。 EthnaかPHPの仕様上、URLパラメータは必ずShift_JISになってしまうのでしょうか? また同じ関係で、urlencode()をした時点で、IEだと%~%~・・・と全ての文字が エンコードされるのですが、Firefoxだとhtmlspecialchars()のような動作をし、 エンコードが上手く出来ません。 (Firefoxの仕様上、そのリンクを押した時点でマルチバイトはエンコードされるようですが) 正しくエンコード・デコードさせる方法としてはどうするのが良いのでしょうか? どなたかご教示願います。

    • ベストアンサー
    • PHP
  • VBA Shift-JISをJISに変換すると半角カナが全角に変換されてしまう

    Excelから全銀フォーマットファイル(文字コード:JIS)を出力する目的で、VBAでADODB.Streamを利用して下記のサンプルコード書いた時、 半角カナが全角カナに変換されてしまう現象が解消できません。 [サンプルコード] With CreateObject("ADODB.Stream") .Open .Position = 0 .Type = 2 .Charset = "iso-2022-jp" .WriteText "(半角ア)、ア、1、1、a、a" .SaveToFile "C:\result.txt", 2 .Close End With [C:\result.txtの内容] ア、ア、1、1、a、a 解決策をご教授お願いいたします。

  • $_GETで2バイト文字列を取得することは可能?

    2バイトで作成されたフォルダ名(漢字やひらがななど)を、 ブラウザにツリー表示して、それがクリックされた時に クリックされたフォルダ名を取得して、 ブラウザがそのフォルダ先を参照し、 フォルダ中のファイル名をブラウザ上に表示できるようにしています。 $_GETを用いて、フォルダ名を取得しているのですが、 2バイトのフォルダ名だと、中身がどうやらバケています。 フォルダ名が英数半角の時は、上手く処理されるのですが、 漢字やひらがななどの2バイトのフォルダ名だと、 どうしても上手くいきません。 エンコードのurlencode()関数やデコードのurldecode()関数 を用いて、いろいろやってみましたが、上手く変換してくれません。 URLと違って、パス名、フォルダ名なので、2バイトだとそもそも $_GETで取得すること自体が無理なのでしょうか? どなたか詳しい方、ご教授いただけると幸いです。 よろしくお願い致します。

    • ベストアンサー
    • PHP