//编码转换
public static String gb2Iso(String gbStr)
{
String str = null;
try{
str = new String(gbStr.getBytes("GBK"),"8859_1");
}catch(Exception e){}
return str;
}
public static String iso2Gb(String Str)
{
String str = null;
try{
str = new String(Str.getBytes("8859_1"),"GBK");
}catch(Exception e){}
return str;
}

解决方案 »

  1.   

    很古老的问题,前段时间我也遇到了,你要保证你的JSP页面的编码一直到输出都是一样的啊
    有JSP,传出去的FromBean,action,数据库都是一样的,慢慢找吧,看是哪个环节出问题的.
    我就用个过滤器就搞定了,
      

  2.   

    ISO8859_1编码的字符串“??m¨±%?j??ú7?=”-----------------------------------------
    不明白这句话。你怎么知道是iso8859-1编码。
      

  3.   

    因为默认是ISO8859_1编码,所以我也知道。
      

  4.   

    我的字符串是这样得来的:new String(data,"ISO8859_1");它应该是iso8859_1编码吧。
    data是用des加密后的byte数组,我想把data转换成字符串保存到数据库里,我要是转成GBK或是UTF-8编码就无法解密。
      

  5.   

    1、String str = new String(data,"UTF-8");存入数据库。2、byte[] b = str.getByte("UTF-8");从数据库中取出str来之后,这样就还原成你原来存的时候的数组data。对b进行解密得到byte[] c,String strLast = new String(c,"你在步骤1中得到data的编码格式");
      

  6.   

    忘了说了,如果你是对String进行的加密,那么步骤2的时候先String strLast = new String(b,"步骤1中data的编码格式");然后进行解密。
      

  7.   

    public static void main(String[] args) throws UnsupportedEncodingException {
    byte[] bytes = {33, -58, 13, -91, 52, 36, -117, -50, 36, 27, -55, 30, 94, 85, -77, -42};
    System.out.println("原始数组:"+Arrays.toString(bytes));

    System.out.println("*****************转成UTF-8字符串操作*****************");
    String desStr = new String(bytes,"UTF-8");
    System.out.println("转为UTF-8的字符串:"+desStr);
    System.out.println("默认编码数组:"+Arrays.toString(desStr.getBytes()));
    System.out.println("UTF-8编码数组:"+Arrays.toString(desStr.getBytes("UTF-8")));
    System.out.println("ISO8859_1编码数组:"+Arrays.toString(desStr.getBytes("ISO8859_1")));


    System.out.println("*****************转成ISO8859_1字符串操作*****************");
    desStr = new String(bytes,"ISO8859_1");
    System.out.println("转为ISO8859_1的字符串:"+desStr);
    System.out.println("默认编码数组:"+Arrays.toString(desStr.getBytes()));
    System.out.println("UTF-8编码数组:"+Arrays.toString(desStr.getBytes("UTF-8")));
    System.out.println("ISO8859_1编码数组:"+Arrays.toString(desStr.getBytes("ISO8859_1")));}
    上面的代码只有把bytes[]变成iso8859的才能得到原始的数组,可是把变成iso8859的字符串放入数据库时,它就变成了另外一个字符串保存到了数据库.
    我的目的就是能从数据库里取回原始的数组信息,但总不能把byte的原始数值存进入吧.
    还请大家多想想办法!
      

  8.   


    你就把"原始数组:"Arrays.toString(bytes)存进去不就行了。
      

  9.   

    加密规则一条就是与不能比原始数据长太多.所以我不想把整个数组当成字符串存进入.
    统一成unicode如何处理?请给一段例子参考一下吧.
      

  10.   

    按ISO8859-1存进数据库,读出字符串str,byte[] data = str.getBytes("GBK");
      

  11.   

    来结贴的。
    我想用base64编码保存应该能解决问题吧。
    有办法的请给我发邮件或是csdn信息留言。