解决delphi客户端用TIDhttp POST 传参中文乱码问题(转)

用Tidhttp post方法向服务器传参,碰到中文乱码的问题。 
1、delphi传中文到Java是乱码。 
上代码: 
procedure TForm18.Button1Click(Sender: TObject); 
var 
  userName : String ; 
  userPwd : String ; 
  Url: String ; 
  Params : TStringList ; 
  result : string ; 
begin 
  if edtUserName.Text ='' then 
    showmessage('请输入用户名') 
    else if edtPwd.Text ='' then 
    showmessage('请输入密码') 
    else 
    begin 
      userName := edtUserName.Text ; 
      userPwd := edtPwd.Text ; 
      Params := TStringList.Create ; 
      Params.Add('userName='+userName) ; 
      Params.Add('userPwd='+userPwd); 
      idHTTP1.Request.ContentType:='application/x-www-form-urlencoded; Charset=UTF-8'; 
      Url := 'http://192.168.1.104:8080/myservlet/servlet/Hello'; 
      result := IdHTTP1.Post(Url, Params); 

    end; 
end; 

    只要加一句idHTTP1.Request.ContentType:='application/x-www-form-urlencoded; Charset=UTF-8';就可以解决。 

2、Java传中文到delphi是乱码。 

    public void doPost(HttpServletRequest request, HttpServletResponse response) 
            throws ServletException, IOException { 
    response.setContentType("text/html:charset=utf_8"); 
    response. setCharacterEncoding("UTF-8"); 
        PrintWriter out = response.getWriter(); 
    login(request ,response); 
    
    } 
    
    public void login (HttpServletRequest request, HttpServletResponse response) 
    throws ServletException, IOException{ 
    
    response.setContentType("text/html:charset=UTF-8"); 
    response.setCharacterEncoding("UTF-8"); 
        PrintWriter out = response.getWriter(); 
    String userName = request.getParameter("userName");  
    String userPwd = request.getParameter("userPwd");    
    LoginDAO loginDAO = new LoginDAO(); 
    List list = loginDAO.searchUser(userName , userPwd ); 
    
    } 

加一句response.setCharacterEncoding("UTF-8");就解决了。 

你可能感兴趣的:(Delphi)