servlet与oracle数据库中文乱码问题在线等 servlet从oracle获取数据时可以显示中文,从页面通过servlet写数据到oracle时,变成乱码“å¢è´”,求解 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1.在你的jsp页面开始的位置确保写入:<%@ page contentType="text/html; charset=GBK" %>2.用post提交3.用这个转换方法再试试看public String transform(String s) { String emp = null; try { emp = new String(s.getBytes("iso-8859-1")); } catch (UnsupportedEncodingException e) { System.out.println("中文处理异常:" + e.getMessage()); } return emp; } 乱码具体解决方案:中文乱码过滤器web.xml中1.注意乱码过滤器要写在struts2过滤器之前,因为servlet是按照filter的声明先后顺序来执行过滤的 <!-- 中文乱码过滤器 --> <filter> <filter-name>encodeFilter</filter-name> <filter-class>com.kingback.mile.encoding.EncodeFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodeFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>2.在com.kingback.mile.encoding下建一个EncodeFilter类package com.kingback.mile.encoding;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 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter;public class EncodeFilter extends StrutsPrepareAndExecuteFilter implements Filter { private FilterConfig config = null; private String encoding = "UTF-8"; @Override public void init(FilterConfig config) throws ServletException { this.config = config; } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { if (encoding == null) { encoding = config.getInitParameter("encoding"); } request.setCharacterEncoding(encoding); response.setCharacterEncoding(encoding); chain.doFilter(request, response); } @Override public void destroy() { config = null; encoding = null; } }3.保证页面中的contentType="text/html; charset=utf-8" 和 pageEncoding="utf-8"一致4.如果以get方式提交,在这里还会有乱码,而post方式不会如果非要用get方式,则需要将服务器server.xml中的connector标签中设定编码与之前的几个地方一致 楼上 过滤器,项目较大 页面较多的时候 建议 用楼上的方法,测试案例的话 直接在servlet 中 持久化数据库之前 request.setcharacterencoding() 和response.setcharacterencoding() 同时设置编码格式 ,-----doPost{ request.setcharacterencoding(); response.setcharacterencoding(); String test=request.getparameter("test");}---- 注意 编码格式要和页面统一,此法 包治百病, 除 Ajax 回调 IT0918liu :你说的方法我试了 页面从数据库读数据没问题,但是 从页面往数据库写数据就变成乱码了。 急!!!读取数据库数据乱码 我拿此问题头大了,拜托高手们救急,谢谢 代码生成工具XDoclet使用中出现问题 这个异常怎么解决啊?望高手指教! struts框架下的类继承问题?在线等。。请大家帮忙看看 Web Service如何实现异步操作?(内详) jsp连接数据库的中文问题 有什么办法可以把后缀为jsp的文件转换成后缀为java的文件 如果LOCAL/REMOTE接口一起实现,怎么查找HOME接口????????进来看看 大家帮忙出现Struts文件编译的奇怪的异常?? IE 自动打开excel是怎么回事。 求一个java ee做的网上商城源码和数据库文件,简单点就行
<%@ page contentType="text/html; charset=GBK" %>
2.用post提交
3.用这个转换方法再试试看
public String transform(String s)
{
String emp = null;
try {
emp = new String(s.getBytes("iso-8859-1"));
} catch (UnsupportedEncodingException e) {
System.out.println("中文处理异常:" + e.getMessage());
}
return emp;
}
1.
注意乱码过滤器要写在struts2过滤器之前,因为servlet是按照filter的声明先后顺序来执行过滤的
<!-- 中文乱码过滤器 -->
<filter>
<filter-name>encodeFilter</filter-name>
<filter-class>com.kingback.mile.encoding.EncodeFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodeFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>2.
在com.kingback.mile.encoding下建一个EncodeFilter类
package com.kingback.mile.encoding;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 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter;public class EncodeFilter extends StrutsPrepareAndExecuteFilter implements Filter {
private FilterConfig config = null;
private String encoding = "UTF-8";
@Override
public void init(FilterConfig config) throws ServletException {
this.config = config;
}
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
if (encoding == null) {
encoding = config.getInitParameter("encoding");
}
request.setCharacterEncoding(encoding);
response.setCharacterEncoding(encoding);
chain.doFilter(request, response);
}
@Override
public void destroy() {
config = null;
encoding = null;
}
}
3.
保证页面中的contentType="text/html; charset=utf-8" 和 pageEncoding="utf-8"一致
4.
如果以get方式提交,在这里还会有乱码,而post方式不会
如果非要用get方式,则需要将服务器server.xml中的connector标签中设定编码与之前的几个地方一致
request.setcharacterencoding() 和response.setcharacterencoding() 同时设置编码格式 ,
-----
doPost{
request.setcharacterencoding();
response.setcharacterencoding();
String test=request.getparameter("test");
}
----
注意 编码格式要和页面统一,此法 包治百病, 除 Ajax 回调
你说的方法我试了 页面从数据库读数据没问题,但是 从页面往数据库写数据就变成乱码了。