我存在mysql数据库中的中文数据是好的,但是通过servlet动态打印到浏览器时就变成乱码了,是什么原因
我加了request.setCharacterEncoding("gbk");这句话,可是不行,这句话好像是只对post请求起作用是吧?
但是我把请求改成post也不行,不知道是怎么回事,有没有高人我感觉会不会是PrintWriter out = response.getWriter();这个输出流的问题呢?
我加了request.setCharacterEncoding("gbk");这句话,可是不行,这句话好像是只对post请求起作用是吧?
但是我把请求改成post也不行,不知道是怎么回事,有没有高人我感觉会不会是PrintWriter out = response.getWriter();这个输出流的问题呢?
?????
response吧,而且必须在PrintWriter out = response.getWriter();这句前面
response.setContextType("text/html;charset=gbk");这句话我有加啊
并且同一编码utf-8
必须在PrintWriter out = response.getWriter();的前面
package com.deng.library.EncodingFilter;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 filter implements Filter { public void destroy() { } public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
request.setCharacterEncoding("GBK");
response.setCharacterEncoding("GBK");
chain.doFilter(request, response);
} public void init(FilterConfig arg0) throws ServletException { }}
web.xml
<filter>
<filter-name>encoding</filter-name>
<filter-class>com.deng.library.EncodingFilter.filter</filter-class>
</filter>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
建议用以下方案处理:
1、从mysql读出内容,打印到控制台上,看是否乱码,如果是,那就要做一个编码转换了。否则执行下一步。
2、改变jsp页面的内容编码,比如改为gbk,gb2312。
DriverManager.getConnection("jdbc:mysql://localhost:3306/dbname?characterEncoding=gbk","user","password");
String value = new String(request.getParameter("epiArtClaim").toString().getBytes("iso8859-1"),"GBK");如果这样转都不行的话,那我就没有办法了
<%@page pageEncoding="gbk" %>
<%@page contentType="text/html;charset=gbk"%>
<%request.setCharacterEncoding("gbk"); %>
这样也不行?
我的tomcat用GBK显示不出中文
但改成UTF-8就行
set方式如果你要正确显示字符的话
需要改服务器的.XML文件里面做修改。
暂时我只用过TOMCAT所以不好说,怎么改。