转码,都转过了,方法如下:
public String getStr(String str)
{
try
{
String temp_p = str;
byte[] temp_t = temp_p.getBytes("ISO8859_1");
String temp =new String(temp_t,"GBK");
return temp;
}
catch(Exception e)
{
}
return "null";
}
/////////////////////////////////////////////
GBK也试过了,GB2312、UTF-8都试过了,照样时乱码,谁还有招吗,多谢!

解决方案 »

  1.   

    public String getStr(String str)
    {
    try
    {
    String temp_p = str;
                               //
                               System.out.println(str);
    byte[] temp_t = temp_p.getBytes("ISO8859_1");
    String temp =new String(temp_t,"GBK");
                               //
                               System.out.println(str);
    return temp;
    }
    catch(Exception e)
    {
    }
    return "null";
    }你先看看两个字串的输出,然后试着将编码改成
    String temp =new String(temp_p.getBytes("ISO-8859-1"),"GBK");
    必须要知道你得到的是什么字符,转成什么字符。别急,慢慢来。
      

  2.   

    呵呵,谢谢楼上的大哥,好的,我们一步一步来分析:首先可以肯定的是:最终我们是要转化成 GBK 码
    那么问题主要在于,我从数据库中取出的汉字是什么编码的,由于是在winNT4的英文版操作系统下,所以我猜想应该是ANSI的编码,那么该如何转化呢?
      

  3.   

    用我这个试试:
    /*
     * gb2312 的标准解码技术:
     * Tomcat3.*,jdk1.2.*上测试通过
     * author:hello_world
     */
    public String encodeForGB2312(String str)
    int str_len = str.length();
    char[] ch_arr = new char[str_len * 5]; 
    int index = 0;
    Character ch;
    byte aPart;
    for (int i = 0; i < str_len; i++)
    {
    ch = new Character(str.charAt(i));
    if (ch.hashCode() >= 0 && ch.hashCode() <= 127)
    {
    ch_arr[index++] = ch.charValue();
    } else
    {
    ch_arr[index++] = '%';
    String b = Integer.toHexString(ch.hashCode());
    ch_arr[index++] = b.toUpperCase().charAt(0);
    ch_arr[index++] = b.toUpperCase().charAt(1);
    }
    }
    return new String(ch_arr, 0, index);
    /*****************************************/
      

  4.   

    hello_world兄,可以告知你的这个程序是在干什么吗?
    是将GB2312码转化成其他码?还是将其他码(是否是特定的码)转化成GB2312码?