• ベストアンサー

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
  • 回答数2
  • ありがとう数3

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

  • ベストアンサー
  • ngsvx
  • ベストアンサー率49% (157/315)
回答No.2

こんにちは。 >どうも、うまくいかないです どう、うまくいきませんか? #1さんの補足にあるコードで、2回目の出力が 「テスト」になっていれば、変数sjisBytes はシフトJISにエンコードされているということです。

tihiro_t
質問者

お礼

>>みなさま 回答いただきありがとうございました!!

その他の回答 (1)

  • UKY
  • ベストアンサー率50% (604/1207)
回答No.1

%83E%83G%83_ と %83%45%83%47%83%5F は見た目は違いますがどちらも「ウエダ」を表します。 エンコードする必要のないものまでエンコードするかどうかの違いです。 %45 は E と、%47 は G と、%5F は _ と等価です。 > エンコードフォームのエンコード形式(SJIS)でエンコードしたいのですが、 Javaでやるなら、一旦 URLEncoder.encode を通した後 %45 などを自前でデコードするとか、String.getBytes で SJIS にエンコードしてそれを自前で URL エンコードするとか。

tihiro_t
質問者

補足

回答いただきありがとうございます!! 他の、ホームページを参考にして作ってみたのですが、どうも、うまくいかないです。どのようにすればよいのかわかりますでしょうか? String string = "テスト"; byte[] sjisBytes = string.getBytes("sjis"); System.out.println(sjisBytes); String string1 = new String(sjisBytes, "sjis"); System.out.println(string1);

関連するQ&A

  • EXCELの関数でエンコードをしたい

    MS-EXCELの関数を使ってsjisに エンコードすることはできますか? 参考: ウエダ をs-jisにエンコードすると、 %83E%83G%83_ となります。 エンコードフォーム(http://home.kendomo.net/board/decode/decode.php )使用 宜しくお願い致します。

  • URLEncoderとURLDecoderの使い方について

    はじめまして。javaの初心者です。 質問があります。以下のソースコードで、 ---------------------------------------------------------------- <%@ page contentType="text/html;charset=Shift_JIS" import="java.net.URLEncoder" %> <html> <body> <p>送信元 Test01.jsp</p> <% String query = URLEncoder.encode("テスト","Shift_JIS"); String url "http://localhost:8080/Test/Test02.jsp?name="+query; %> <a href="<%=url%>">送信</a> </body> </html> ---------------------------------------------------------------- <%@ page contentType="text/html;charset=Shift_JIS" import="java.net.URLDecoder" %> <html> <body> <p>送信先 Test02.jsp</p> <% String str = request.getParameter("name"); String name = URLDecoder.decode(str,"Shift_JIS"); %> <%= name %> </body> </html> ---------------------------------------------------------------- リンクに日本語をエンコードした文字列をクエリとして追加して 送信すると、送信先で表示したとき文字化けしてしまいます。 setCharacterEncoding("Shift_JIS")などを送信先に指定すると 文字化けは回避できるのですが、それではURLEncoderやURLDecoder を使用している意義がないのではないかと思っています。 なぜ文字化けしてしまうのかをご教授お願いします。 現在WindowsXP IE6.0 Tomcat5.5 JDK1.5を使用しています。

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

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

  • PHPとjavascriptで共通なエンコード方法

    PHPからjavascriptにバイナリデータ(16バイト程度)を受け渡す 処理を作成しているのですが、うまく動作しないので、相談します。 バイナリデータをエンコードしてPHPからjavascriptに 以下の流れで引き渡しています。 (1)PHPのbase64_encodeでバイナリデータをエンコード (2)エンコードしたデータをjavascriptに出力 (3)javascriptでデータをデコード (3)のデコードには次のページのbase64.jsなど、いくつかの デコード方法を試してみました。 http://www.onicos.com/staff/iz/amuse/javascript/expert/ しかしながら(1)の元のデータと(3)でデコードしたデータが 一致しません。 質問したいのは以下の2点です。 ・PHPのbase64_encodeとjavascriptのbase64エンコードは  一般的に方式が違うのでしょうか。同じbase64なので  同じコードが生成されると考えたのですが、そうでは  ないのでしょうか。 ・base64_encodeでも、その他の方法でもかまわないので  PHPとjavascriptで共通なエンコード方式、あるいは  PHP上のバイナリデータをjavascriptに正しく受け渡す  方法があれば教えて下さい。 よろしくお願いします。

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

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

    • ベストアンサー
    • Java
  • 携帯電話の絵文字とURLエンコード/デコードについて

    携帯電話の絵文字とURLエンコード/デコードについて Java・シェルスクリプトによるCGIとPHPを用いた 携帯電話向けのウェブアプリを開発しています。 アプリの内容としては、PHP側で生成したHTMLのフォームから ユーザーに入力してもらった文字列を引数としてJava側に渡し、 Java側で値を受け取ってから、文字列変換処理を行うものです。 この際の、携帯電話特有の絵文字の取り扱いについてつまずいています。 PHPとPHPとの間の場合は、フォームから送られるパラメータが 絵文字を含んでいたとしても、特に何の問題なく絵文字パラメータの 入力・送信(<input type="text" name="hoge" value="EMOJI">)・ 受信・表示(echo $_REQUEST['hoge']; で EMOJI を表示する)ができていたのですが、 フォームから送られるURLエンコードされたクエリー文字列を Java側で引数として受け取り、もとの文字列に戻すためにURLデコードの処理をかけると、 携帯電話で入力した絵文字の部分だけ文字化けしてしまいます。 (現在確認の取れているのは、ドコモの絵文字とauの絵文字が「 ? 」 (半角のクエスチョンマーク)に化けてしまう事態です) PHPどうしの間でフォームによってPOSTやGETで送受信される際も 入力された値がいったんURLエンコードされてから HTTPリクエストに乗ることは間違いないと思うので、 Java側のURLデコーダーの問題かと思われるのですが (たとえば、未知の範囲のバイナリはすべて例外として ? にしてしまう、など)、 どなたか解決策等をご存じないでしょうか。 ちなみに現状、絵文字以外の通常の文字列に関しては目立った問題はなく 受信、変換処理、表示等ができている段階なので、 最後の最後に絵文字の問題だけが残ってしまい、困っています。 よろしければ、ご教唆のほど、よろしくお願い申し上げます。 参考までに、開発環境は以下の通りです。 ・Windows XP SP3 + Eclipse Build id: 20100218-1602(ローカル開発環境) ・Cent OS 5.3(アプリ実行用VPSサーバー) ・Sun JDK SE: 1.6.0_20 (開発用Windowsマシン・アプリ実行用サーバともに同じバージョン) ・使用言語および文字コード  Java、PHP、日本語、Shift_JIS(携帯電話のうち、ドコモがShift_JISを標準とするため) ・URLデコーダーに使っているパッケージ・クラス  org.apache.commons.codec.net.URLCodec の decode()メソッド (Shift_JISの場合、java.net.URLDecoder は java.net.URLEncoderでエンコードしたものしか正常にデコードできないため) (参考: http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=25659&forum=12 ) ( http://commons.apache.org/codec/download_codec.cgi )

    • ベストアンサー
    • Java
  • URLエンコード(JavaScript)をデコード(JSP)する方法

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

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

    phpでXMLやデータベースとの連携を実験中です。結果、連携はうまくいったのですが、文字のエンコードについて思うことがあります。連携によって引き出された情報はテキストとなってphp上に表示されますが、エンコードがどれもUTF-8となっています。その為文字化けが起こってしまい、右クリック>エンコード>Unicode(UTF-8)という手順でエンコード方法を変更する手間が発生してしまいます。 製作側の自分自身はもちろんのこと、これではユーザー側にも面倒な一手間をかけてしまうことになります。 なんとかこのエンコード方法を一般的なSJISにする方法はありませんでしょうか?

    • 締切済み
    • PHP
  • 掲示板に携帯から書き込むとURLエンコード

    PHPを使って掲示板を作成しています。 UTF-8でPHPファイルを作成し、UTF-8のテキストファイルにログをためていく感じで作っています。 PCでは、だいたい正常に動くようになったのですが、携帯電話(au/W61S)からの投稿を試してみたところ、投稿結果がURLエンコードの状態になってしまいました。。。 %82%c6%82%a4%82%b1%82%a4%82%c4%82%b7%82%c6 さらにシフトJISでエンコードされているようでしたので、自分のつたない知識を総動員して、以下のような処理をさせることでなんとか形にはなったのですが、かなり処理としては乱暴な気がしています。 携帯電話からの投稿というのは、URLエンコードとして受け取るしかないのでしょうか(auでしか試していないため、他のキャリアだと別の問題が発生するのでしょうか?) また、下記の方法よりももっとスマートに携帯からの投稿を、表示できる文字列に変換する方法をご存じの方がいらっしゃいましたら、ご教授いただければ幸いです。 よろしくお願いいたします。 <?php //フォーム内に入力された文字列を取得 $test = $_GET['formtxt']; //先頭の文字を抽出 $firsttxt = substr($test,0,1); //先頭の文字列が%であれば、URLデコードを行い、シフトJISからUTF-8に変換する if($firsttxt == "%"){ $test = urldecode($test); $test = mb_convert_encoding($test,'UTF-8','SJIS'); } ?>

    • 締切済み
    • PHP
  • エンコードを変えたらHPが真っ白に。

    自分のサイトを、以前はSHIFT-JIS設定にしていました。 PHPの送信で文字化けエラーが起きた為、 設定をEUC-JP設定に変更しました。 そうしたら全てのwebページが真っ白に。。 もちろんエンコードをEUC-JPに変えれば見ることができますが、 初めてページを見る人には真っ白になってしまってういれば エンコードを変える必要があることに気づけないと思います。 色々他のページも見てみたところ、SJISでもEUCでも見れるページもありました。 この設定はどうすれば良いのでしょうか?

    • ベストアンサー
    • HTML

専門家に質問してみよう