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&jdbcCompliantTruncation=false&useUnicode=true&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以及其它的一些版本不同而报错。
------解决方案--------------------
如需要阅读该回复,请登录或注册CSDN!