JSPからサーブレットにデータ(引数:t109003)を飛ばし、そのデータをデータベースに登録するコードを書きましたが、
日本語の部分は全部「?」になってしまいました。
データベースのコード、テーブルのコードをともにutf8に設定しておりますが、
いろいろ方法調べて、character_setの設定も全部utfに変えましたが、同じ文字化けが発生します。
テーブルの設定は以下の通りです:
Table: ten Create Table: CREATE TABLE `ten` ( `ten_id` int(11) NOT NULL DEFAULT '0', `ten_name` varchar(30) DEFAULT NULL, `ten_date` varchar(30) DEFAULT NULL, `ten_shipment` int(11) DEFAULT NULL, PRIMARY KEY (`ten_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8
データベースの設定
+----------+-------------------------------------------------------------------+ | Database | Create Database | +----------+-------------------------------------------------------------------+ | satotest | CREATE DATABASE `satotest` /*!40100 DEFAULT CHARACTER SET utf8 */ | +----------+-------------------------------------------------------------------+
文字コードの設定:
+--------------------------+--------------------------------+ | Variable_name | Value | +--------------------------+--------------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | C:\xampp\mysql\share\charsets\ | +--------------------------+--------------------------------+
なお、MYsqlを再起動したら元通りになります。
+--------------------------+--------------------------------+ | Variable_name | Value | +--------------------------+--------------------------------+ | character_set_client | cp932 | | character_set_connection | cp932 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | cp932 | | character_set_server | latin1 | | character_set_system | utf8 | | character_sets_dir | C:\xampp\mysql\share\charsets\ | +--------------------------+--------------------------------+
サーブレットコード:
Connection con = null; try{ con = DBManager.getConnection(); String sql = "INSERT INTO ten (ten_id,ten_name,ten_date,ten_shipment) VALUES (555,'テスト2',?,?)"; PreparedStatement pstm = con.prepareStatement(sql); request.setCharacterEncoding("UTF-8"); int t109003 =0; request.getParameter("t109003"); t109003 = Integer.parseInt(request.getParameter("t109003")); System.out.println(t109003); pstm.setString(1, "1月13日"); pstm.setInt(2,t109003); pstm.executeUpdate(); }catch(Exception e){ e.printStackTrace(); }
登録したデータは以下のようになります:
+--------+----------+----------+--------------+ | ten_id | ten_name | ten_date | ten_shipment | +--------+----------+----------+--------------+ | 555 | ???2 | 1?13? | 4 | +--------+----------+----------+--------------+
皆様の知恵を、お貸しください。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/02/06 01:11