1. 程式人生 > >jsp頁面寫入mysql資料庫時漢字亂碼

jsp頁面寫入mysql資料庫時漢字亂碼

自己在用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;
	    }

通過這些步驟,應該可以解決您的亂碼問題。如果有用的話,歡迎點贊,關注!!!