`

JSP插入MySQL数据库中文乱码问题解决

阅读更多

通过JSP页面向MySQL数据库插入中文数据时乱码问题

 

刚开始插入数据时,mysql数据库表内显示???,读取时同样也是???

对此查找了相关资料,首先注意保持服务器、数据库、项目、以及前端编码一致。

 

具体做法是:

 

一、项目编码,Eclipse设置。

Eclipse Java EE IDE for Web Developers ->右键项目 -> Properties -> Resource -> Text file encoding ->other utf-8 ->apply and close

 

二、tomcat服务器编码设置(conf\server.xml)

<Connector port="8080" protocol="HTTP/1.1"   
             connectionTimeout="20000"   
             redirectPort="8443"  URIEncoding="UTF-8"/>  

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" URIEncoding="UTF-8"/> 

三、数据库mysql的my.ini配置文件

[client]  
port = 3306   
default-character-set=utf8 

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash
; Remove the next comment character if you are not familiar with SQL
;safe-updates
default-character-set=utf8 

[isamchk]
key_buffer_size = 20M
sort_buffer_size = 20M
read_buffer_size = 2M
write_buffer_size = 2M

[myisamchk]
key_buffer_size = 20M
sort_buffer_size_size = 20M
read_buffer_size = 2M
write_buffer_size = 2M

[mysqlhotcopy]
interactive-timeout

[mysqld]
port = 3306

character-set-server = utf8

 

  修改文件后需要使用net stop mysql/net start mysql关闭开启mysql服务重启mysql服务

 

四、项目

检查项目中有前端编码的地方

a. JSP页面

<%@ page language="java" contentType="text/html; charset=utf-8"  
    pageEncoding="utf-8"%>  

 b. Servlet服务器端

 response.setCharacterEncoding("UTF-8");  

 c. 其它有编码的地方。

把所有的编码设置一致。本例是为UTF-8.

 

 

通过以上步骤还款解决的话,可以在项目中加一个Filter:

package com.kh.utils;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class SetCharacterEncodingFilter implements Filter {

	
	protected String encoding = null;

	
	protected FilterConfig filterConfig = null;

	
	protected boolean ignore = true;

	
	public void destroy() {

		this.encoding = null;
		this.filterConfig = null;

	}

	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException {

		// Conditionally select and set the character encoding to be used
		if (ignore || (request.getCharacterEncoding() == null)) {
			String encoding = selectEncoding(request);
			if (encoding != null)
				request.setCharacterEncoding(encoding);
		}

		// Pass control on to the next filter
		chain.doFilter(request, response);

	}

	public void init(FilterConfig filterConfig) throws ServletException {

		this.filterConfig = filterConfig;
		this.encoding = filterConfig.getInitParameter("encoding");
		String value = filterConfig.getInitParameter("ignore");
		if (value == null)
			this.ignore = true;
		else if (value.equalsIgnoreCase("true"))
			this.ignore = true;
		else if (value.equalsIgnoreCase("yes"))
			this.ignore = true;
		else
			this.ignore = false;

	}


	
	protected String selectEncoding(ServletRequest request) {

		return (this.encoding);

	}

}

 

在Web.xml中加入配置代码:

 

<filter>
		<filter-name>encodingFilter</filter-name>
		<filter-class>com.kh.utils.SetCharacterEncodingFilter</filter-class>
		<init-param>
			<param-name>encoding</param-name>
			<param-value>UTF-8</param-value>
		</init-param>
		<init-param>
			<param-name>ignore</param-name>
			<param-value>true</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>encodingFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>	

 

 

 

 

 

0
3
分享到:
评论

相关推荐

    JSP MySQL插入数据时出现中文乱码问题的解决方法

    当在使用JSP页面向MySQL数据库插入中文数据时,经常会出现乱码问题。这个问题主要是由于字符编码不一致导致的,因为JSP页面和数据库对字符集的处理方式有所不同,如果处理不当,就会导致中文乱码。 首先,要了解...

    JSP MySQL插入数据时出现中文乱码问题的解决方法.docx

    JSP MySQL 插入数据时出现中文乱码问题的解决方法 在 JSP 应用程序中,使用 MySQL 数据库时,插入中文数据可能会出现乱码问题。这种问题的产生是因为客户端和服务器端的字符集编码不一致所导致的。解决这个问题需要...

    解决jsp存入数据库中的乱码问题

    以下是一些关键的知识点和步骤来解决JSP存入数据库中的乱码问题: 1. **理解编码问题**:乱码通常发生在字符从一种编码转换到另一种编码时,例如从UTF-8编码的JSP页面转换到GBK编码的数据库。确保所有环节都使用...

    mysql数据库乱码问题.pdf

    以下是一些关于如何解决MySQL数据库乱码问题的关键知识点: 1. **安装时的字符集选择**: - MySQL在安装时会要求设置默认的字符集。如果这个字符集与你的应用程序(如JSP页面)使用的编码不同,可能会引起乱码。 ...

    mysql插入数据库编码解决

    在处理MySQL数据库插入中文数据时,经常遇到编码问题导致乱码。这主要是由于不同环节的编码不一致所造成的。以下是两种解决方法,适用于普通Web项目和Struts框架的项目。 ### 方法一:普通Web项目 #### 1. 页面...

    java插入数据乱码解决集锦

    ### Java插入数据乱码解决集锦 #### 一、Java中文问题的由来及核心问题解析 Java作为一种广泛使用的编程语言,在处理中文等多语言文本时可能会遇到字符编码不匹配导致的乱码问题。这些问题主要源于Java程序在不同...

    jsp操作MySQL实现查询 插入 删除功能示例.docx

    jsp 操作 MySQL 实现查询、插入、删除功能示例是指使用 Java 服务器页面(jsp)来操作 MySQL 数据库,以实现查询、插入、删除等基本数据库操作的示例。 jsp 操作 MySQL 实现查询功能示例 在该示例中,jsp 页面使用...

    JSP+ MySQL中文乱码问题post提交乱码解决方案

    MySQL数据库在存储中文字符时也需要正确设置字符编码以保证中文数据不出现乱码。在给定的代码中,开发者在mysql_insert.jsp页面中尝试通过执行SQL命令来设置数据库的字符集: ```jsp stmt.executeQuery("SET NAMES ...

    JSP中文编码理论及乱码产生原因及问题解决

    4. 数据库编码问题:数据库表的编码与插入或查询时使用的编码不匹配,也可能导致乱码。 三、乱码问题解决方案 1. 统一编码:确保所有环节(如JSP页面、HTML、CSS、JavaScript、数据库、文件系统等)都使用同一套...

    乱码解决_MYSQL.txt

    ### MySQL乱码问题解决方案 #### 一、理解MySQL字符集设置的重要性 在处理数据库操作时,字符集(Character Set)的正确配置对于确保数据的准确读取与存储至关重要。特别是对于包含多语言文本的应用场景,如中文、...

    jsp中文乱码问题解决方案

    解决JSP中文乱码问题需要关注多个环节,包括JSP页面的编码设置、请求和响应处理、文件操作、数据库操作以及开发工具的配置。只有确保每个环节都正确处理字符编码,才能彻底解决中文乱码的问题。在实际开发中,养成...

    jsp页面连接数据库

    以下是从给定的部分内容中提取的关键代码段,展示了如何在JSP页面中连接MySQL数据库并查询数据: ```jsp ;charset=GB2312" pageEncoding="GB2312"%&gt; *"%&gt; String DBDRIVER = "org.gjt.mm.mysql.Driver"; String ...

    经典jsp对数据库的增加+展示

    ### 经典JSP对MySQL数据库的增加与展示:深入解析 #### 核心知识点概述 在本案例中,我们探讨了如何利用JSP(Java Server Pages)技术结合MySQL数据库实现数据的增加与展示功能。这涉及到JSP页面设计、数据库连接...

    解决Linux下Tomcat向MySQL插入数据中文乱码问题

    这里我们将深入探讨如何解决Linux环境下Tomcat服务器向MySQL数据库插入中文数据时出现乱码的问题。 首先,我们要了解这个问题的背景。在Windows上开发的项目,可能在本地环境使用了某种特定的字符编码(如UTF-8),...

    页面乱码解决4种方案

    **问题描述**:当应用程序通过JDBC连接到MySQL数据库时,如果查询结果中包含中文字符,可能会出现乱码。这是由于数据库连接字符串中的字符集编码未被正确设置导致的。 **解决方案**:为了避免这种问题,在数据库...

    JSP与MYSQL的连接.pdf

    在实际操作中,当JSP尝试向MySQL数据库插入汉字时,可能会遇到乱码问题。这是因为字符编码不一致导致的。为了解决这个问题,可以在连接数据库时指定字符编码,例如设置为`utf-8`,如下所示: ```java Properties ...

    JSP struts2 url传参中文乱码解决办法.docx

    除了上述解决方法,还有其他可能出现中文乱码的场景,如JSP文件和HTML相互引入时的乱码、MySQL数据库插入数据时的乱码、页面转发过程中的乱码以及SmartUpload组件处理中文文件名时的乱码等。对于这些问题,一般也...

Global site tag (gtag.js) - Google Analytics