※ ChatGPTを利用し、要約された質問です(原文:LINUX文字化け)
LINUX文字化け
こんにちは。
いつも勉強させていただいています。
質問があるのでよろしくお願いします。
以下のjsp、サーブレットプログラムによって
DBアカウント"DBtest"のテーブル"test"に
2バイト文字を登録すると"?"と文字化けしてしまいます。
文字化けせず登録する方法(コーディング)
を教えていただけないでしょうか
非常に困っております。
ご回答よろしくお願いします。
【環境】
データベース MYSQL 4.1.1
TOMCAT 4.1.31
【手順】
1. http://ドメイン/コンテキスト/test.jspにアクセス
2. 2バイト文字をテキストボックスに入力する。
3. 送信ボタンを押下する。
確認:mysqlにログインし"select * from test"
とコマンドを入力し実行する。
結果:2バイト文字の部分が"?"となっている。
------------test.jsp---------------
<html>
<head></head>
<body>
<form action="test" method="post" >
<input type="text" name="test">
<input type="submit" value="送信">
</form>
</body>
</html>
--------test.java--------
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletException;
import java.io.IOException;
import javax.servlet.ServletContext;
import javax.servlet.RequestDispatcher;
import java.io.PrintWriter;
import java.sql.*;
import java.util.*;
public class test extends HttpServlet
{
String testStr="";
Connection con_info = null;
Statement stmt = null;
ResultSet rs_master = null;
ResultSet rs_transaction = null;
Exception exception;
public void doPost( HttpServletRequest req,
HttpServletResponse res )
throws Exception
{
req.setCharacterEncoding( "Shift_JIS" );
res.setContentType( "text/html; charset=Shift_JIS" );
testStr=req.getParameter("test");
try
{
Class.forName( "com.mysql.jdbc.Driver" );
String jdbcurl = "jdbc:mysql://localhost/DBtest";
Properties props = new Properties();
props.put("user", "root");
props.put("password", "password");
props.put("useUnicode", "true");
props.put("characterEncoding", "Shift_JIS");
con_info = DriverManager.getConnection( jdbcurl, props );
String sql="insert into test(input_str) values('"+testStr+"')";
stmt = con_info.createStatement();
int kekka = stmt.executeUpdate(sql);
//省略
}
catch(Exception e)
{
//省略(エラー画面遷移するコード)
}
}
}
-------------------------------------------------------
お礼
hofchanさん。 大変申し訳ございません 質問締め切るのをわすれていました。。 なかなかうまくいかなかったので、 手っ取り早く、文字コードをDBに登録して データを取り出すときにShift_JISでデコードすることにしました。 もっと勉強して、普通に文字化けをなおせるよう 努力したいと思います。 以上、今後ともよろしくお願いします。