jsp页面写入mysql数据库时汉字乱码

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Android_MSK/article/details/72809360

自己在用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");//中文不乱码
		//数据库操作,以及转发

	}

三.数据库编码格式

查看并修改数据库编码格式。

方式一。通过命令窗(比较麻烦,建议使用方式二)

方式二.通过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;
	    }

通过这些步骤,应该可以解决您的乱码问题。如果有用的话,欢迎点赞,关注!!!

猜你喜欢

转载自blog.csdn.net/Android_MSK/article/details/72809360