`

jsp+mysql 中文乱码问题

阅读更多
jsp页面中输入中文数据,保存到mysql数据库中是乱码,从数据库中读取数据后在jsp页面显示还是乱码,要解决此问题需从以下几个方面考虑:
1、获得mysql的字符集
查看mysql字符集的命令是:
 mysql> show variables like "character_set_%";
  
character_set_system 总是utf-8 
这5个最好总是保持一致,
character_set_client    
character_set_connection
character_set_database  
character_set_results   
character_set_server
2、在jsp页面指定编码格式,保证跟mysql的字符集一致:
view plaincopy to clipboardprint?
  <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
 
3、web.xml添加字符编码过滤器,编码方式也要保证跟mysql的字符集一致:
view plaincopy to clipboardprint?
	<!-- 著名 Character Encoding filter -->  
	    <filter>  
	        <filter-name>encodingFilter</filter-name>  
	        <filter-class>  
	            org.springframework.web.filter.CharacterEncodingFilter   
	        </filter-class>  
	        <init-param>  
	            <param-name>encoding</param-name>  
	            <param-value>utf-8</param-value>  
	        </init-param>  
	    </filter>  
	  
	    <filter-mapping>  
	        <filter-name>encodingFilter</filter-name>  
	        <url-pattern>*.do</url-pattern>  
	    </filter-mapping>  
JSP页面提交后中文字符出现乱码-tomcat下中文乱码问题项目和页面都已设成了UTF-8编码形式; 
解决方法:
1) 设定请求的字符编码request.setCharacterEncoding("UTF-8");
2) 指定过滤类
这些天开发一个项目,服务器是tomcat,操作系统是xp,采用的是MVC架构,模式是采用 Facade模式,总是出现乱码,自己也解决了好多天,同事也帮忙解决,也参考了网上众多网友的文章和意见,总算是搞定。但是好记性不如烂笔杆,所以特意记下,以防止自己遗忘,同时也给那些遇到同样问题的人提供一个好的参考途径: 

4. JSP页面上是中文,但是看的是后是乱码: 
解决的办法就是在JSP页面的编码的地方,因为Jsp转成Java文件时的编码问题,默认的话有的服务器是ISO-8859-1,如果一个JSP中直接输入了中文,Jsp把它当作 ISO8859-1来处理是肯定有问题的,这一点,我们可以通过查看Jasper所生成的Java中间文件来确认 

5. 当用Request对象获取客户提交的汉字代码的时候,会出现乱码: 
解决的办法是:要配置一个filter,也就是一个Servelet的过滤器,代码如下: 
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; 
import javax.servlet.UnavailableException; 

/** 
* Example filter that sets the character encoding to be used in parsing the 
* incoming request 
*/ 
public class SetCharacterEncodingFilter implements Filter { 

/** 
* Take this filter out of service. 
*/ 
public void destroy() { 
} 
/** 
* Select and set (if specified) the character encoding to be used to 
* interpret request parameters for this request. 
*/ 
public void doFilter(ServletRequest request, ServletResponse response, 
FilterChain chain)throws IOException, ServletException { 

request.setCharacterEncoding("GBK"); 

// 传递控制到下一个过滤器 
chain.doFilter(request, response); 
} 

public void init(FilterConfig filterConfig) throws ServletException { 
} 
} 
配置web.xml 

Set Character Encoding 
SetCharacterEncodingFilter 


Set Character Encoding 
/* 

如果你的还是出现这种情况的话你就往下看看是不是你出现了第四中情况,你的Form提交的数据是不是用get提交的,一般来说用post提交的话是没有问题的,如果是的话,你就看看第四中解决的办法。 
还有就是对含有汉字字符的信息进行处理,处理的代码是: 
package dbJavaBean; 

public class CodingConvert 
{ 
public CodingConvert() 
{ 
// 
} 
public String toGb(String uniStr){ 
String gbStr = ""; 
if(uniStr == null){ 
uniStr = ""; 
} 
try{ 
byte[] tempByte = uniStr.getBytes("ISO8859_1"); 
gbStr = new String(tempByte,"GB2312"); 
} 
catch(Exception ex){ 
} 
return gbStr; 
} 

public String toUni(String gbStr){ 
String uniStr = ""; 
if(gbStr == null){ 
gbStr = ""; 
} 
try{ 
byte[] tempByte = gbStr.getBytes("GB2312"); 
uniStr = new String(tempByte,"ISO8859_1"); 
}catch(Exception ex){ 
} 
return uniStr; 
} 
} 
你也可以在直接的转换,首先你将获取的字符串用ISO-8859-1进行编码,然后将这个编码存放到一个字节数组中,然后将这个数组转化成字符串对象就可以了,例如: 
String str=request.getParameter(“girl”); 
Byte B[]=str.getBytes(“ISO-8859-1”); 
Str=new String(B); 
通过上述转换的话,提交的任何信息都能正确的显示。 
6. 在Formget请求在服务端用request. getParameter(“name”)时返回的是乱码;按tomcat的做法设置Filter也没有用或者用 request.setCharacterEncoding("GBK");也不管用问题是出在处理参数传递的方法上:如果在servlet中用 doGet(HttpServletRequest request, HttpServletResponse response)方法进行处理的话前面即使是写了: 
request.setCharacterEncoding("GBK"); 
response.setContentType("text/html;charset=GBK"); 
也是不起作用的,返回的中文还是乱码!!!如果把这个函数改成doPost(HttpServletRequest request, HttpServletResponse response)一切就OK了。 
同样,在用两个JSP页面处理表单输入之所以能显示中文是因为用的是post方法传递的,改成get方法依旧不行。 
由此可见在servlet中用doGet()方法或是在JSP中用get方法进行处理要注意。这毕竟涉及到要通过浏览器传递参数信息,很有可能引起常用字符集的冲突或是不匹配。 
解决的办法是: 
1) 打开tomcat的server.xml文件,找到区块,加入如下一行: 
URIEncoding=”GBK” 
完整的应如下: 


2)重启tomcat,一切OK。 
需要加入的原因大家可以去研究 $TOMCAT_HOME/webapps/tomcat-docs/config/http.html下的这个文件就可以知道原因了。需要注意的是:这个地方如果你要是用UTF-8的时候在传递的过程中在Tomcat中也是要出现乱码的情况,如果不行的话就换别的字符集。 

(四) JSP页面上有中文,按钮上面也有中文,但是通过服务器查看页面的时候出现乱码: 
解决的办法是:首先在JSP文件中不应该直接包含本地化的消息文本,而是应该通过标签从Resource Bundle中获得文本。应该把你的中文文本放到Application.properties文件中,这个文件放在WEB-INF/classes/* 下,例如我在页面里有姓名,年龄两个label,我首先就是要建一个Application.properties,里面的内容应该是name=”姓名” age=”年龄”,然后我把这个文件放到WEB-INF/classes/properties/下,接下来根据 Application.properties文件,对他进行编码转化,创建一个中文资源文件,假定名字是 Application_cn.properties。在JDK中提供 

 

分享到:
评论

相关推荐

    jsp+servlet+mysql乱码解决的这天

    jsp+servlet+mysql乱码解决方案是指在使用jsp+servlet+mysql开发web应用程序时,如何解决中文乱码问题的解决方案。该方案通过设置每个页面的编码格式为utf-8,控制器servlet中的请求编码格式为utf-8,数据库连接url...

    jsp+mysql中文乱码解决方案集合

    在使用JSP结合MySQL进行Web应用开发时,中文乱码问题一直是困扰开发者的一大难题。本文将详细介绍如何在MySQL数据库层面解决中文乱码问题,并提供一系列实用的方法和技巧。 #### MySQL配置文件(my.cnf)设置 在...

    EBook网上书城jsp+servlet+mysql

    利用jsp+servlet实现的一个网上书城web应用,数据库使用的是MySQL,具体的处理涉及到:中文乱码的处理,购物车,订单管理,用户账户管理,商品搜索,高级搜索,登录/注册,各种系统验证。里面包含了系统的一些设计...

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

    在处理JSP与MySQL交互时,中文乱码问题是一个常见且棘手的问题。特别是在使用POST方法提交含有中文的数据到数据库,并在JSP页面中展示这些数据时,如果未正确处理字符编码,就可能出现乱码现象。本知识点将详细解析...

    mysql.rar_JSP+Mysql_中文乱码

    在开发Web应用时,我们经常会遇到中文乱码问题,特别是在JSP与MySQL的结合使用中。这个"mysql.rar_JSP+Mysql_中文乱码"压缩包提供的资源旨在帮助开发者解决此类问题。以下是对这个问题的详细解释和解决方案。 首先...

    jsq+mybatis+mysql中文乱码解决方案

    本文将从 JSP、MyBatis 和 MySQL 三个方面来解决中文乱码问题。 JSP 中文乱码解决方案 在 JSP 中,中文乱码的原因主要是浏览器和服务器的编码格式不一致。解决方法是: 1. 在 JSP 页面头部添加 `; charset=UTF-8...

    解决jsp+MysQL输入和输出中文乱码的方法!

    解决jsp+MysQL输入和输出中文乱码的方法! 解决jsp+MysQL输入和输出中文乱码的方法!

    java+jsp+mysql开发 web项目处理中文乱码问题

    处理 Java+jsp+mysql 开发 web 项目中文乱码问题 在 Java+jsp+mysql 开发 web 项目中,中文乱码问题是一个常见的问题,影响着项目的正常运行。下面我们将从四个方面来解决中文乱码问题: 一、Jsp 输出中文的乱码...

    jsp+mysql学生信息管理系统

    (第四代)学生信息管理系统,没有中文乱码问题,部署简单,功能全。使用最新技术开发:eclipse2022,支持java:17or8,支持mysql:8.0or5.7or.56,tomcat:10 普通用户 具有按学号学好查询学生资料功能,普通用户必须先...

    Struts+Hibernate+MyEclipse+Tomcat+MySQL的乱码之解决篇

    在本篇文章中,我们将深入探讨如何解决Struts + Hibernate + MyEclipse + Tomcat + MySQL环境中出现的乱码问题。该问题通常出现在处理中文字符时,由于编码设置不当导致中文显示为乱码或无法正常读取。为了确保系统...

    JSP+MYSQL 库存管理系统

    中文乱码问题的解决方案是系统开发中的常见挑战,其他常见问题可能涉及数据同步、性能优化等。已实现的功能包括基础的库存管理,而待完善的功能可能包括系统性能提升、用户体验优化等。 总体而言,这个JSP+MySQL...

    JSP+MYSQL+中文处理

    **JSP+MySQL+中文处理**是Web开发中常见的需求,特别是在处理中文数据时,需要注意字符编码的统一和兼容性,以确保数据的正确存储和显示。以下将详细阐述涉及的几个关键知识点。 首先,**MySQL数据库配置**是处理...

    Struts+Hibernate+MyEclipse+Tomcat+MySQL的乱码之解决

    总之,要解决Struts+Hibernate+MyEclipse+Tomcat+MySQL环境中的乱码问题,你需要检查并设置以上提到的所有环节的编码,确保它们统一为UTF-8。通过这种方法,可以有效地避免乱码的出现,从而提供良好的用户体验。在...

    在线考试系统平台设计,框架:html + js + css + jsp + servlet + java + mysql

    后端:jsp + servlet + java + mysql 开发工具:ideaIC-2022.3.2.exe 或者eclipse都行 + jdk1.8 + Apache Tomcat/8.5.78 select version() 获取数据库版本'5.6.00' 图片无法加载是因为拦截器,修改拦截器,或者删除...

    网络考试系统平台设计,框架:html + js + css + jsp + servlet + java + mysql

    后端:jsp + servlet + java + mysql 开发工具:ideaIC-2022.3.2.exe 或者eclipse都行 + jdk1.8 + Apache Tomcat/8.5.78 http://localhost:8080/exam/ select version() 获取数据库版本'5.6.00' 图片无法加载是因为...

    解决springmvc+mybatis+mysql中文乱码问题

    在开发Java Web应用程序时,尤其是使用Spring MVC、MyBatis和MySQL这样的技术栈时,中文乱码问题常常困扰着开发者。本文将详细讲解如何解决在处理请求、响应以及数据库存储时可能出现的中文乱码问题。 首先,让我们...

    mysql+jsp+SSH网站开发中文乱码解决方案

    在进行MySQL、JSP以及SSH(Struts、Spring、Hibernate)框架集成的网站开发时,中文乱码问题是一个常见的困扰。这通常是由于编码格式不一致、设置不当或处理方式错误导致的。以下是一些关键的知识点,可以帮助你解决...

Global site tag (gtag.js) - Google Analytics