jsp頁面寫入mysql資料庫時漢字亂碼
阿新 • • 發佈:2018-10-31
自己在用jsp把中文寫入mysql的時候出現亂碼,原因很簡單就是編碼格式的問題。通過檢查和蒐集資料發現亂碼的原因主要分為以下幾類。
一.jsp頁面資料編碼格式
一般通過在頁面上方設定編碼格式即可,無需做過多的操作。(設定為UTF-8,GBK也可以,UTF-8幾乎支援所有國家的語言)
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
二.servlet頁面獲取和傳值
在servlet頁面設定response和request編碼格式public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setCharacterEncoding("UTF-8"); request.setCharacterEncoding("UTF-8"); // 獲取表單中引數 String sname = request.getParameter("sname");//中文不亂碼 //資料庫操作,以及轉發 }
三.資料庫編碼格式
檢視並修改資料庫編碼格式。方式一。通過命令窗(比較麻煩,建議使用方式二)
百度有相關教程: http://jingyan.baidu.com/article/03b2f78c68b0c15ea237ae8d.html方式二.通過navicat for mysql工具修改
開啟軟體,連線資料庫,右鍵點選開啟連線->找到你使用的資料庫,右鍵點選資料庫屬性,可看到如圖下,修改為圖中所示。選擇你使用的表,右鍵點選表表訊息可看到下圖,檢視右邊 整理是為utf8_bin
四.還有就是JDBC建立資料庫連結時最好設定好編碼格式
(我的專案就是由於這個導致的亂碼)
下面是我的JDBC程式碼,可以直接使用
重點是URL設定為
public static final String url = "jdbc:mysql://127.0.0.1/mysql?useUnicode=true&characterEncoding=UTF-8";
JDBC程式碼為
package com.JDBC;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class DateBase {
public static final String url = "jdbc:mysql://127.0.0.1/mysql?useUnicode=true&characterEncoding=UTF-8";
public static final String driver = "com.mysql.jdbc.Driver";
public static final String username = "root";
public static final String password = "msk";
public Connection conn=null;
public Connection getConn() {
try {
Class.forName(driver); //classLoader,載入對應驅動
conn = (Connection) DriverManager.getConnection(url, username, password);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
通過這些步驟,應該可以解決您的亂碼問題。如果有用的話,歡迎點贊,關注!!!