以下是我的代码,客户端提交上来的是UTF-8的编码,我的代码应该也转成GB的了,但都是些乱码,应该怎么样才能显示正常呢?public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
ServletInputStream in = request.getInputStream(); //����ļ�������
BufferedInputStream fileIn = new BufferedInputStream(in);
byte[] b=new byte[1024];
int len=fileIn.read(b);
String outStr=new String(b,0,len);
PrintWriter out=response.getWriter(); //byte[] tmpb;
//tmpb=outStr.getBytes("8859_1");
String tmpStr=new String(outStr.getBytes("UTF-8"),"GB2312");
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
ServletInputStream in = request.getInputStream(); //����ļ�������
BufferedInputStream fileIn = new BufferedInputStream(in);
byte[] b=new byte[1024];
int len=fileIn.read(b);
String outStr=new String(b,0,len);
PrintWriter out=response.getWriter(); //byte[] tmpb;
//tmpb=outStr.getBytes("8859_1");
String tmpStr=new String(outStr.getBytes("UTF-8"),"GB2312");
楼主【miocoojjx】截止到2008-06-26 15:49:41的历史汇总数据(不包括此帖):
发帖数:4 发帖分:110
结贴数:4 结贴分:110
未结数:0 未结分:0
结贴率:100.00% 结分率:100.00%
敬礼!
String name = request.getParameter("name");//假设你提交的表单里有name,表单的方法要是post
String tmpStr=new String(name.getBytes("UTF-8"),"GB2312");System.out.println(tmpStr);
应该可以正常显示,//我没测试的,你试试
System.out.println(tmpStr)中的中文是乱码
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">看看你页面是不是这2地方都设置成utf-8了
你是post吗
[color=#FF00FF]//,表单的方法要是post[/color]
FilterChain chain) throws IOException, ServletException {
if (request.getCharacterEncoding() == null) {
request.setCharacterEncoding("UTF-8");
}
chain.doFilter(request, response);
}页面也设置<%@ page contentType="text/html;charset=UTF-8"%>
再次谢谢大家!~~
非常感谢
我已经很就没有编过Servlet了.所以,一时也无法给你指正.不过,楼主要是能保证2的一致性以及3的一致性,根本就不用再编什么代码来转换编码格式.以下是我对这两个方法的理解,具体对不对,路过的人可以共同讨论一下.
request.setCharacterEncoding("UTF-8");//这个方法,是我们读取客户端提交的信息是采用UTF-8编码(楼主要保证客户端提交时,也是UTF-8就可以了)
response.setContentType("text/html;charset=UTF-8"); //这个方法,是告诉客户端,我们发送的数据是要按UTF-8来解析的.1.数据和数据就会有区别了.request.setCharacterEncoding("UTF-8");这个方法,只是在request.getParameter("xxx");中生效,楼主要是用request.getInputStream()方法,那在读取的时候,要自己设置读取流所采用的编码方式,否则,读出来的就是乱码.
2.response.setContentType("text/html;charset=UTF-8");方法,告诉客户端要按UTF-8来解析数据,但是,客户端并不一定按你告诉的执行(一般都执行),这样,楼主可以对浏览器进行编码设置,几乎每个浏览器都有这个功能.手动设置一下看看行不行.
3.一般情况下,response.setContentType("text/html;charset=UTF-8");设置以后,客户端也会按UTF-8的编码形式来提交数据的.(我指的是Form表单中的数据).
4.搞清楚,request.getInputSteam();与request.getParameter();并非完全等价.两者的信息存在差异.楼主要关注一下HTTP协议的一些简单的内容,才能了解.