
タイトルの通りです。おそらくエンコード処理がうまくいってないと思うのですが、どこをどう直したらいいのかわかりません。コードは参考書の通り書いています。
java
1import java.io.*; 2import javax.servlet.*; 3import javax.servlet.http.*; 4 5public class Sample2 extends HttpServlet{ 6 public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException{ 7 try{ 8 String tmp = request.getParameter("cars"); 9 String carname = new String(tmp.getBytes("8859_1"),"JISAutoDetect"); 10 11 response.setContentType("text/html; charset=Shift_JIS"); 12 13 PrintWriter pw = response.getWriter(); 14 pw.println("<html>\n" 15 + "<head><title>\n" + carname 16 + "</title></head>\n" 17 + "<body><center>\n" 18 + "<h2>\n" + carname + "</h2>\n" 19 + carname 20 + "のお買い上げありがとうございました。<br/>\n" 21 + "</center></body>\n" 22 + "</html>\n"); 23 }catch(Exception e){ 24 e.printStackTrace(); 25 } 26 } 27}
html
1<html> 2<head><title>サンプル</title></head> 3<body><center> 4<img src="car.gif"/><br/> 5<h2>ようこそ</h2> 6<hr/> 7お選びください。<br/> 8<br/> 9<form action="http://localhost:8080/YJK/servlet/Sample2" method="GET"> 10<input type="text"name="cars"/> 11<input type="submit" value="送信"/> 12</form> 13</center></body> 14</html>
Sample2.htmlの実行画面↓
「乗用車」と入力して送信すると・・・↓
" 乗用車
乗用車のお買い上げありがとうございました。"
となるはずなのですが、ご覧のとおり?????になってしまいます。どうすればいいのでしょうか。
追記
shanxia様の回答を参考に、class Sample2の
response.setContentType("text/html; charset=Shift_JIS");
を
response.setContentType("text/html;charset=UTF-8");
に変えてみたのですが、上手くいきませんでした…。ただ設定ファイルの方で
encoding="ISO-8859-1"
とあったので、そちらを
encoding="UTF-8"
としてみたところ、下図のようになりました。
どうやら入力フォームの変換が上手くいってないようです。
Sample2.javaファイルは「UTF-8(BOMなし)」というコードだと思います。「UTF-8」にして
javac -encoding UTF8
でコンパイルしようとすると、一行目で「'\ufeff'は不正な文字です」というエラーが出てコンパイルできないのです。(BOMなしだとコンパイルできる)。
一応設定ファイルも載せておきます。
xml
1<?xml version="1.0" encoding="UTF-8"?> 2 3<web-app xmlns="http://java.sun.com/xml/ns/javaee" 4xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 5xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 6http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 7version="3.0"> 8 9 <display-name>YasaJava</display-name> 10 <description>YasaJava</description> 11 12 <servlet> 13 <servlet-name>Sample</servlet-name> 14 <servlet-class>Sample</servlet-class> 15 </servlet> 16 17 <servlet-mapping> 18 <servlet-name>Sample</servlet-name> 19 <url-pattern>/servlet/Sample</url-pattern> 20 </servlet-mapping> 21 22 <servlet> 23 <servlet-name>Sample2</servlet-name> 24 <servlet-class>Sample2</servlet-class> 25 </servlet> 26 27 <servlet-mapping> 28 <servlet-name>Sample2</servlet-name> 29 <url-pattern>/servlet/Sample2</url-pattern> 30 </servlet-mapping> 31</web-app>
回答2件
あなたの回答
tips
プレビュー
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
また依頼した内容が修正された場合は、修正依頼を取り消すようにしましょう。
退会済みユーザー
2016/01/26 18:08
2016/01/27 01:48