• ベストアンサー

JSPでUTF-8の文字列表示

JSPでUTF-8の文字列を表示することができず困っています。 HTMLの<form>でPOSTした任意の文字列をjspでUTF-8の文字列に変えたいのですが、 いろいろ試したのですがどうもうまくできません。 jspは全然くわしくないので困ってます。 以下のようなHTMLで <body> <h1 style="background:#cccccc;width:60%">文字コード変換したい文字列を入力</h1> <br> *UTF-8に変換します。 <form method="POST" action="moji2.jsp"> <textarea name="enco" cols="60" rows="7"></textarea> <br /> <input type="submit" value="変換" /> </form> </body> 以下のようなJSPファイルで <%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" %> <%@ page import="java.net.*" %> <% request.setCharacterEncoding("Windows-31J"); %> <% String en = request.getParameter("enco"); String ren = URLEncoder.encode(en); %> <%=ren %> となまぁただUTF-8の文字列を表示をする勉強をしていたのですがいろいろかえてもShift_JISでエンコードされた文字列が表示されます。 例)あいうえお で入力すると %82%A0%82%A2%82%A4%82%A6%82%A8 やりたいことはこのサイトと同じことなんです http://www.tagindex.com/tool/url.html 例)あいうえお %e3%81%82%e3%81%84%e3%81%86%e3%81%88%e3%81%8a 最終目標は任意の文字列をUTF-8に変換して、ヤフーの形態素解析をすることです。初心者ですがよろしくお願いします。。

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

  • ベストアンサー
noname#49664
noname#49664
回答No.1

テキストをUTFに変換するだけなら、getBytesでバイト配列を取得し、それを元にして新たにStringを作成すればいいでしょう。 String s0 = 元のテキスト String s1 = new String(s0.getBytes("UTF-8"), "UTF-8"); こんな感じですね。

BNR34FD3S
質問者

補足

ありがとうございます。 しかしうまくいかないのですが、何がいけないのでしょう? 教えていただいた String s0 = 元のテキスト String s1 = new String(s0.getBytes("UTF-8"), "UTF-8"); を String s0 = request.getParameter("enco"); HTMLで入力した任意文字列をPOSTしてSoにいれる String s1 = new String(s0.getBytes("UTF-8"), "UTF-8"); として、元の <% String en = request.getParameter("enco"); String ren = URLEncoder.encode(en); %> の部分に入れ替えたのですが・・・ あいうえお・・・と入力すると 普通に あいうえお  とそのまま表示されています。

その他の回答 (1)

noname#235174
noname#235174
回答No.2

こんにちは String ren = URLEncoder.encode(en); ではなくて String ren = URLEncoder.encode(en, "UTF-8"); でどうでしょう?

BNR34FD3S
質問者

補足

返事が大変おそくなってしまいました。 結果的にアドバイスいただいたもので行ってもダメでした。 表示させることに問題があるのかもしれません。 入力した文字列をそのまま形態素にリクエストさせてみようと思います。