質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

Q&A

解決済

1回答

4452閲覧

MySQLにサーブレットからInsertすると日本語が文字化けする

RyoM

総合スコア90

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

0グッド

0クリップ

投稿2016/08/15 17:52

お世話になります。
java初心者でようやく会員登録フォームからデータベースに登録するというところまで来たのですが、insert文でinsertしたデータの日本語が文字化けしてしまいます。
調べてみると、setcharaEncodingあたりで不具合が出ているのだと思うのですが、お分かりになる方、回答のほど、よろしくお願いいたします。

java

1<%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 4<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 5<html> 6<head> 7<title>会員登録フォーム</title> 8</head> 9<body> 10 11<H1>会員登録フォーム</H1> 12<P>ユーザーID</P> 13<FORM ACTION="../InsertDb" method="get"> 14<INPUT type="text" name="user"> 15<P>パスワード</P> 16<INPUT type="password" name="pass"> 17<P>年齢</P> 18<INPUT type="text" name="age"> 19<INPUT type="reset"> 20<INPUT type="submit"> 21</FORM> 22</body> 23</html>

java

1package insert; 2 3import java.io.IOException; 4import java.sql.PreparedStatement; 5import java.sql.SQLException; 6 7import javax.servlet.ServletException; 8import javax.servlet.annotation.WebServlet; 9import javax.servlet.http.HttpServlet; 10import javax.servlet.http.HttpServletRequest; 11import javax.servlet.http.HttpServletResponse; 12 13import com.mysql.jdbc.Connection; 14 15import connect.MySql; 16 17 18@WebServlet("/InsertDb") 19public class InsertDb extends HttpServlet 20{ 21 private static final long serialVersionUID = 1L; 22 23 protected void doGet(HttpServletRequest request, 24 HttpServletResponse response) throws ServletException, IOException 25 { 26 Connection con = null; 27 PreparedStatement ps = null; 28 String user = request.getParameter("user"); 29 String pass = request.getParameter("pass"); 30 String ages = request.getParameter("age"); 31 32 int pass1 = Integer.parseInt(pass); 33 int age1 = Integer.parseInt(ages); 34 35 36 37 38 39 try 40 { 41 // MySQLに接続 42 con = MySql.getConnection(); 43 44 String sql = "INSERT INTO PERSONAL(username,password,age) VALUES(?,?,?)"; 45 46 ps = con.prepareStatement(sql); 47 ps.setString(1, user); 48 ps.setInt(2, pass1); 49 ps.setInt(3, age1); 50 int num = ps.executeUpdate(); 51 System.out.println(num); 52 53 } 54 catch(SQLException e) 55 { 56 throw new ServletException(e); 57 } 58 finally 59 { 60 if(ps != null) 61 { 62 try 63 { 64 ps.close(); 65 } 66 catch(SQLException ignore) 67 {} 68 } 69 if(con != null) 70 { 71 try 72 { 73 con.close(); 74 } 75 catch(SQLException ignore) 76 {} 77 } 78 } 79 request.getRequestDispatcher("/db/test.jsp") 80 .forward(request, response); 81 82 } 83 84} 85

あと、filterでencodingの設定をしているはずなので、
一応、これも載せておきます。

java

1package filter; 2 3import javax.servlet.Filter; 4import javax.servlet.FilterChain; 5import javax.servlet.FilterConfig; 6import javax.servlet.ServletException; 7import javax.servlet.ServletRequest; 8import javax.servlet.ServletResponse; 9import javax.servlet.annotation.WebFilter; 10 11@WebFilter(filterName="EncodingFilter", urlPatterns="/*") 12public class EncodingFilter implements Filter 13{ 14 public void init(FilterConfig fConfig) throws ServletException 15 { 16 } 17 public void doFilter(ServletRequest request, 18 ServletResponse response, 19 FilterChain chain) 20 throws java.io.IOException, ServletException 21 { 22 // place your code here 23 request.setCharacterEncoding("UTF-8"); 24 System.out.println("aiu"); 25 // pass the request along the filter chain 26 chain.doFilter(request, response); 27 } 28 public void destroy(){} 29}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

RyoM

2016/08/16 15:45

出来ました!ありがとうございます!
argius

2016/08/17 17:21

質問が付かずに解決された場合は、質問者様ご自身で質問のクローズをお願いします。質問の下部にある「自己解決方法を記入する」で解決した方法を書いて投稿すれば、クローズできます。
guest

回答1

0

自己解決

私の場合、Xamppを使用していたので、Xamppないのmy.cnfの
[mysqld]の部分に
...
character-set-server=utf8 を追加してあげるといけました!

投稿2016/08/17 18:51

RyoM

総合スコア90

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問