星期一再做不好就要被人炒了...救救啊..分数全给了
这次我写了过滤码,,但是还是在存入mysql数据库时是乱码
过滤器源码是:
package TR;
import javax.servlet.*;
import javax.servlet.http.HttpServlet;
import java.io.IOException;
/**
*
* Date: 2005-9-19
* Time: 17:33:36
* @author Duzk
*/
public class MyFilter extends HttpServlet implements Filter {
private FilterConfig filterConfig;
//Handle the passed-in FilterConfig
public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
}
//Process the request/response pair
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain filterChain) {
try {
request.setCharacterEncoding("GBK");
filterChain.doFilter(request, response);
} catch (ServletException sx) {
filterConfig.getServletContext().log(sx.getMessage());
} catch (IOException iox) {
filterConfig.getServletContext().log(iox.getMessage());
}
}
//Clean up resources
public void destroy() {
}
}
然后在web.xml里加上这段
<filter>
<filter-name>MyFilter</filter-name>
<filter-class>TR.MyFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>MyFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
而我用来测试的jsp源码为
<%@ page language="java" contentType="text/html; charset=GBK"%>
<%@ page import="java.sql.*" %>
<html>
<meta http-equiv="Content-Type" content="text/html;charset=GBK">
<body>
<form name="form1" method="post" action="">
<%
Connection conn=null;
Statement sql=null;
ResultSet rs=null;
request.setCharacterEncoding("GBK");
// String abc = new String(request.getParameter("textfield").getBytes("ISO-8859-1"));
String name = request.getParameter("textfield");
//name=new String(name.getBytes("ISO-8859-1"), "bg2312");
out.println(name);
try
{
Class.forName("com.mysql.jdbc.Driver").newInstance();
}
catch (ClassNotFoundException e){}
try
{
String url="jdbc:mysql://localhost:3306/english" ;
conn=DriverManager.getConnection(url,"root","123456");
sql=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
rs=sql.executeQuery("Select * from text");
sql.executeUpdate("insert into text values"+"("+"'"+name+"')");
}
catch (Exception e) {}
%>
<label>
<input type="text" name="textfield">
</label>
<label>
<input type="submit" name="Submit" value="提交">
</label>
</form>
</body>
</html>
但还是不行??请救救,,应该如何改啊?
问题点数:40、回复次数:15Top
1 楼huataixiang19810225(无名)回复于 2006-04-01 10:06:16 得分 0
google上一大堆
设置你的mysql的编码方式为utf8Top
2 楼Fifotom()回复于 2006-04-01 10:11:59 得分 0
如果说页面执行正常只有MySQL数据库中显示乱码的话,那么在MySQLCC等查看工具中设置一下就可以了,好像是某一地方可以改变数据的现实编码的。Top
3 楼zx2002027(http://www.netyi.net/in.asp?id=zx2002027)回复于 2006-04-01 10:29:24 得分 0
MYSQL不熟,帮顶Top
4 楼chenlx01(Coder)回复于 2006-04-01 10:36:05 得分 0
你mysql建表的时候,有没有设置字符编码?
CREATE TABLE xx` (... ) ENGINE=MyISAM DEFAULT CHARSET=gbk;
String url="jdbc:mysql://localhost:3306/english" ;
改为String url="jdbc:mysql://localhost:3306/english?useUnicode=TRUE&characterEncoding=GBK";Top
5 楼ohbug(臭虫)回复于 2006-04-01 10:58:15 得分 0
在MySQL的my.ini文件中设置编码,不然行不通的。
加上
--default-characte-set=gbk
然后向数据库写数据的时候,用GBK转换一下字符串,如果不设置数据库的编码格式,很多时候都不能成功。Top
6 楼crazyhardy(難得想)回复于 2006-04-01 11:53:56 得分 0
这乱码真是很么难解决吗??我试过以上几种方法,,chenlx01(Coder) 的,ohbug(臭虫)的也试过,,也是不行,,真是晕C。。。Top
7 楼tangcx(因为帅所以爱)回复于 2006-04-01 11:58:23 得分 0
<%!
String tran(String tem)
{
String str=null;
try
{
byte b[]=tem.getBytes("ISO-8859-1");
str=new String(b);
}
catch(Exception e){}
return str;
}
%>
我在SQL中是用这个函数来过虑的..Top
8 楼tangcx(因为帅所以爱)回复于 2006-04-01 12:03:22 得分 0
补充一下.
String name = request.getParameter("textfield");
if(name!=null)
name=tran(name);
else
name="";
Top
9 楼xiangbo520(充栋汗牛)回复于 2006-04-02 09:28:46 得分 0
过滤器对数据库操作是无效的,它只能对进站请求进行控制。
你应该设置数据库的默认编码。Top
10 楼xiangbo520(充栋汗牛)回复于 2006-04-02 09:33:56 得分 0
告诉你我的办法:
设置数据库编码为GBK或者gb2312
设置GET方式传递参数编码为GBK或者gb2312,在serverl.xml中你的服务中设置URIEncoding="GBK"
设置POST方式传递参数编码为GBK或者gb2312,在页面或者过滤器中设置request.setCharacterEncoding("GBK");
这样以后中文就随我怎么用了,再也没有讨厌的中文问题了。Top
11 楼crazyhardy(難得想)回复于 2006-04-02 20:51:40 得分 0
我机器是繁体机,公司的机器,,帮它写一个留言板,,其它部分都做好了,,就差乱码问题??tomcat是5.5 会不会是tomcat问题??(听讲装4.1会没事) 想让它们可以输入简体中文,繁体中文,和英文,,现在就简体繁体也做不到,,是不是都将它们设置为gbk??可以兼容的??
xiangbo520(充栋汗牛)的方法我明天试试,,行了就立刻结贴,,再次谢谢大家的讨论,,可以的话再提供点好些的方法..谢谢大家了..Top
12 楼cqyysy(爱睡觉的tomcat)回复于 2006-04-02 21:16:41 得分 0
LZ发给我吧,曾经我遇到过折中问题
sheyin@126.comTop
13 楼sheep219(sheep219)回复于 2006-04-02 22:02:33 得分 0
我也碰到过了,主要是数据库的编码问题,你可以重新configration配置编码格式,它默认的是latin你改成GBK要是你要繁体的话。然后页面端提交或显示也用charset GBK还有你要是用servlet或者struts做系统的话可以写过滤器,把编码格式转换成GBK那样就万事OK了Top
14 楼crazyhardy(難得想)回复于 2006-04-03 19:28:24 得分 0
TO:sheep219(sheep219
我想问一下configration这个怎么配置呢??可以祥细一点说呢??谢谢 了..Top
15 楼crazyhardy(難得想)回复于 2006-04-05 15:00:34 得分 0
??Top




