此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
楼主【jaujau2008】截止到2008-06-23 18:08:49的历史汇总数据(不包括此帖):
发帖数:10 发帖分:290
结贴数:5 结贴分:130
未结数:5 未结分:160
结贴率:50.00 % 结分率:44.83 %
楼主加油
楼主【jaujau2008】截止到2008-06-23 18:08:49的历史汇总数据(不包括此帖):
发帖数:10 发帖分:290
结贴数:5 结贴分:130
未结数:5 未结分:160
结贴率:50.00 % 结分率:44.83 %
楼主加油
SET character_set_client=GBK;
SET character_set_connection=GBK;
SET character_set_database=GBK;
SET character_set_filesystem=GBK;
SET character_set_results=GBK;
SET character_set_server=GBK;3、连接字符串如下:
jdbc:mysql://localhost/数据库名称?useUnicode=true&characterEncoding=GBK
不然数据存到数据库后会成乱码的.!
------------------------EncodingFilter.java------------------------
package com.take.filter;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 EncodingFilter implements Filter { public void destroy() {
// TODO Auto-generated method stub } public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {
arg0.setCharacterEncoding("GBK") ;
arg2.doFilter(arg0, arg1) ;
} public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub }}------------------------ web.xml加入以下代码------------------------
<filter>
<filter-name>encoding</filter-name>
<filter-class>com.take.filter.EncodingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
package choose.tools;import java.io.UnsupportedEncodingException;public class ToChinese {
public String ToChange(String text){
String changed="";
try {
changed = new String(text.getBytes("ISO-8859-1"),"gb2312");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return changed;
}
}在servlet中
ToChinese change=new ToChinese();
String lname=request.getParameter("lname");
lname=change.ToChange(lname);
类的路径自己import好就可以了
分别修改成如下就可以了。[mysql]
default-character-set=gbk[mysqld]default-character-set=utf8
设置服务端的系统参数,default-character-set 设好后,以后新建的库、表都是以这个字符集的[mysql]
设置客户端的系统参数,default-character-set 设好后,客户端与 MySQL 服务端交互都是采用
这个字符集的,当然了这个也可以不设置,但得在 MySQL JDBC 的连接字符串中指定:
jdbc:mysql://localhost:3306/<database_name>?useUnicode=true&characterEncoding=GBKPS:my.ini 文件位于 MySQL 安装目录下。
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;
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);}
}
3、在web.xml中增加下面代码:<filter>
<filter-name>Set Character Encoding</filter-name>
<filter-class>filters.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</init-param>
</filter> <filter-mapping>
<filter-name>Set Character Encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>4、编写JSP文件,在文件头部增加代码:<%@ page pageEncoding="GBK"%>或者<%@ page contentType="text/html;charset=GBK"%>根据以上步骤,重新启动Tomcat服务,即可正确显示中文
这个是连接数据库的,编码要为 GBK;如果你在程度中显示的还是乱码就用(Filter)过虑器
a、jsp页面显示乱码:
是因为浏览器默认支持的地"iso8859-1",是不支持中文的,因此要人工转换:
在文件头上加上:<%@page contentType="text/html;charset=gb2312" %>
就处理好了页面的中文显示.
b、jsp页面传递乱码:
这个问题,只要在传递参数时,把编码进行转换就可以了,具体代码:
<%
String str=newString(request.getParameter("str").getBytes("iso-8859-1"),"gb2312");
%>
就可以了。
2、servlet处理中文参数的乱码:
servlet中时常要接收jsp页面传过来的参数,它也要进行一次编码转换,转换方式是,在接收参数的方法内,接收参数之前加上:
request.setCharacterEncoding("gb2312");
这句话,是专门处理页面传过来的乱码处理问题,保证在这里接收时,能接收到正确的中文。
而还有一名话,也是要加的:
response.setContentType("text/html; charset=gb2312");
这句话,就是专门处理在servlet里,当参数经过处理后,要传到客户端显示时,要保证传送的是正确的中文。
这两句话,都得写在servlet里。
3、url传递的中文乱码问题:
使用url编码传递参数,可以实现客户端会话跟踪,如果参数中有中文字符,就会无法读取。
如这样的:
<a href="url.jsp?method1=第一个参数&method2=第二个参数">点击</a>,还有使用get方法时,会经过url,有中文时,也会出问题。
到url里传递时,中文就会出现问题,处理方法:
在接收参数的jsp文件里,接收参数时,使用以下方法处理一下:
<%
String method1=new String(request.getParameter("method1").getBytes("ISO8859-1"),"gb2312");
String method2=new String(request.getParameter("method2").getBytes("ISO8859-1"));
%>
就可以了。
而对于从数据库中取出来,首先看的看你的数据库编码是不是与接收数据时的地方一样,不一样就得把数据库的编码转换成一样的。这个就好说。
如果是一样的,那就是要在接收的地方进行一个编码的转换了。
如上面的:在jsp页面接收这个参数时,就进行相关的处理。如果在servlet里接收时,就也和上面的一样了。
对于楼主,OK
mysql支持中文的字符集是utf8,不是别的 String name=new String(request.getParameter("name").getBytes("ISO8859-1"),"UTF-8");
这样你去试一试吧
在连接数据库的时候也定义一下编码的字符集
如:
jdbc:mysql://localhost:3306/dbname?useUnicode=true&characterEncoding=utf8
这样就可以直接输入汉字了
我也遇到过,你看看这里的内容,也许对你有帮助!
2、你的表和字段的编码应该不会修改吧。
3、数据库连接字符串
jdbc:mysql://localhost:3306/yourDB?useUnicode=true&characterEncoding=utf-8;
4、你的servlet or action中的编码。
5、你的页面编码。
无非就这么多,具体的修改方式google下就好了。