プロが教える店舗&オフィスのセキュリティ対策術

タイトルどおり、以下のようなコードでMysqlデータベースに接続しようとしました。

<%@ page contentType="text/html; charset=Shift_JIS" import="java.sql.*" %>
<html>
<head>
<title>データを表示する</title>
</head>
<body>
<%
//データベース設定
String sv = "localhost"; //サーバ名
String db = "test"; //データベース名
String user = "feifei"; //ユーザ名
String pass = "feifei"; //パスワード
String encode = "EUC_JP"; //文字コード

//データベースに接続する
Class.forName("org.gjt.mm.mysql.Driver");
String url = "jdbc:mysql://" + sv + "/" + db
+ "?user=" + user
+ "&password=" + pass
+ "&useUnicode=true&characterEncoding=" + encode;
Connection conn = DriverManager.getConnection(url);

//データを取得する
Statement st = conn.createStatement();
String sql = "SELECT * FROM table1"; //実行するSQL
ResultSet rs = st.executeQuery(sql);

//データを全件表示する
out.println("<table border=0>");
while(rs.next()){
out.println("<tr>");
out.println("<td>" + rs.getInt("id") + "</td>");
out.println("<td>" + rs.getString("name") + "</td>");
out.println("<td>" + rs.getInt("point") + "</td>");
out.println("</tr>");
}
out.println("</table>");

//データベース接続を閉じる
conn.close();
%>
</body>
</html>

しかし、なぜかわかりませんが、表示した内容のうち日本語はすべて[?]と文字化けしてしまいます。
ちゃんとディレクティブで「charset=Shift_JIS」と指定しているのになぞです。
どうか教えてください。よろしくお願いします。

A 回答 (1件)

mysqlの文字コードがEUC_JPであるのだから、charset=Shift_JIS


と指定しては文字化けしますよね。

web.xmlの設定やcharsetをEUC_JPにすればいいのでないかな。

もしEUC_JPでサイト造りするのが、もう手遅れならば・・・
MySQL側の設定で文字コードをShift_JISにすればいいでしょう。
#ただ、DB内の文字コードを混在させないように今のレコードの文字コードを変換、ないし、入れ替える必要がありますけど。
    • good
    • 0
この回答へのお礼

ありがとうございました。
EUC_JPをShift_JISに変更することで解決しました。

お礼日時:2004/10/28 16:50

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!