以下是我的代码,客户端提交上来的是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");

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【miocoojjx】截止到2008-06-26 15:49:41的历史汇总数据(不包括此帖):
    发帖数:4                  发帖分:110                
    结贴数:4                  结贴分:110                
    未结数:0                  未结分:0                  
    结贴率:100.00%            结分率:100.00%            
    敬礼!
      

  2.   

    ServletInputStream   in   =   request.getInputStream(); 这里得到的数据是UTF-8格式的客户端post上来的数据都是UTF-8的
      

  3.   

    从流中得到的数据应该也是UTF-8,因为客户端提交的是以utf-8格式提交的
      

  4.   


    String name = request.getParameter("name");//假设你提交的表单里有name,表单的方法要是post
     String tmpStr=new String(name.getBytes("UTF-8"),"GB2312");System.out.println(tmpStr);
    应该可以正常显示,//我没测试的,你试试
      

  5.   

    你把你页面上的编码也改成utf-8<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
      

  6.   

    fuyou001 
    System.out.println(tmpStr)中的中文是乱码
      

  7.   

    <%@ page language="java" pageEncoding="UTF-8"%>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">看看你页面是不是这2地方都设置成utf-8了
      

  8.   

    <form method="post">的吗
    你是post吗
    [color=#FF00FF]//,表单的方法要是post
    [/color]
      

  9.   

    直接写一个过滤器public void doFilter(ServletRequest request, ServletResponse response,
    FilterChain chain) throws IOException, ServletException {
    if (request.getCharacterEncoding() == null) {
    request.setCharacterEncoding("UTF-8");
    }
    chain.doFilter(request, response);
    }页面也设置<%@ page contentType="text/html;charset=UTF-8"%>
      

  10.   

    <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> 提交参回的页面加上了这句,接收页面得到的中文还是乱码
      

  11.   

    非常感谢各位,Filter我也加了的,用的是utf-8但还是乱码最后在提交数据时用urlencoder编下码,接收后再URLDecoder.Decode解码出来...郁闷,中文问题弄得头都大了
    再次谢谢大家!~~
    非常感谢
      

  12.   

    3个问题,搞定后两个就OK了.1.你的Servlet(如果有JSP文件,那也要搞定)文件的编码,否则,源代码无法正常显示,楼主的Servlet文件就存在这个问题.一般会编译无法通过.2.你的Servlet中的Response是用什么编码发送个客户端的.客户端要用什么编码来解析你的响应页面.3.客户端提交数据采用的是什么编码,你的Servlet采用什么编码来解析提交的数据.
    我已经很就没有编过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协议的一些简单的内容,才能了解.
      

  13.   

    再次谢谢:preferme 非常感谢