Java默认是UTF-8编码的,你可以在页面上加上<%@ page contentType="text/html;charset=gb2312"%>,这样页面就会以GB2312编码的方式传送POST中的参数。

解决方案 »

  1.   

    我必须在java应用程序中发出http post 请求,也就是手工写http协议的body部分。只能自己转化,不能指望浏览器
      

  2.   

    java应用程序中的编码默认是unicode,只要把编码从unicode转化为utf-8就是了,有固定的转化格式
    private static String chHz(char c){
    //得到汉字的utf-8编码,在这里从unicode向utf-8转化
    String ret="";
    int n=(int)c;
    if(n<0x80) {
    ret+=Integer.toHexString(n);
    }else if(n<0x800){
    ret+="%"+Integer.toHexString((0xC0 | n>>6)).toUpperCase(); 
    ret+="%"+Integer.toHexString((0x80 | n & 0x3F)).toUpperCase(); 
    }else if(n<0x10000){
    ret+="%"+Integer.toHexString(0xE0 | n>>12).toUpperCase(); 
    ret+="%"+Integer.toHexString(0x80 | n>>6 & 0x3F).toUpperCase();  
    ret+="%"+Integer.toHexString(0x80 | n & 0x3F).toUpperCase(); 
    }else if(n<0x200000){
    ret+="%"+Integer.toHexString(0xF0 | n>>1).toUpperCase();  
    ret+="%"+Integer.toHexString(0x80 | n>>12 & 0x3F).toUpperCase(); 
    ret+="%"+Integer.toHexString(0x80 | n>>6 & 0x3F).toUpperCase(); 
    ret+="%"+Integer.toHexString(0x80 | n & 0x3F).toUpperCase(); 
    }
    return ret;
      

  3.   

    request.setContentType("text\html;charset=gb2312");
      

  4.   

    String result = java.net.URLEncoder.encode("汉字","utf-8");
      

  5.   

    zzzhc() 的直接了当, cxz7531大花猫的接近实现底层