日期:2014-05-17  浏览次数:20696 次

50分挑战JSP上传表单信息到MySQL后乱码解决方案!~(在线等!....)
我写了一个上传文件的例子,用JSP写的。
addRecord.jsp 和 saved.jsp 两个页面。
其中addRecord.jsp 是表单页面;saved.jsp 是与数据库连接&显示结果的页面。
问题:从addRecord.jsp提交到saved.jsp的表单信息还是中文的,到了数据库中却变成乱码了!~









代码不打算贴在这里了,代码长了也没人看。需要看的朋友我一会把文件的链接地址给你。

事先声明:你的方法要是下面的几种解决方案,请你不要再发与我的重复的了!~
用过的解决方案:

1.<%@page contentType="text/html;Charset=gb2312"%> 失败!~

2.<%@page contentType="text/html;Charset=gbk"%> 严重问题.即使把用的那个数据库的字符编码改成gbk也不行。

3.在saved.jsp加入request.setCharacterEncoding("gb2312"); 失败!~

4.在saved.jsp和addRecord.jsp都加入
  <%@page pageEncoding="GBK"%>  
  <%@page contentType="text/html;charset=GBK"%> 失败!~
5.修改MySQL配置文件my.ini
  [client]
  default-character-set=gb2312
  port=3306

  [mysql]

  default-character-set=gb2312

  [mysqld]
  default-character-set=gb2312 同时在建数据库时设置数据库编码及其那两个JSP页面都改成gb2312 失败!~

6.String test = new String(request.getParameter("test").getBytes("ISO-8859-1"),"GBK"); 报错!~因为我的表单里有文件上传的内容(<form action="saved.jsp" method=post enctype="multipart/form-data">)。文件上传的MIME字符编码与ISO-8859-1冲突!~

期待大家的好消息!~



------解决方案--------------------
不知道你的数据库链接的URL中是否设置了编码?
jdbc:mysql://localhost:3306/testdb?autoReconnect=true&amp;jdbcCompliantTruncation=false&amp;useUnicode=true&amp;characterEncoding=GB2312
------解决方案--------------------
web.xml如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<filter>
<filter-name>EncodingFilter</filter-name>
<filter-class>com.tsinghua.filter.EncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</init-param>
</filter>

<filter-mapping>
<filter-name>EncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping> 
 
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>3</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>3</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
</web-app>

这一块也比较重要会根据你使用的jdk以及其它的一些版本不同而报错。

------解决方案--------------------