转换函数怎么写的?
如果按你说的,单独写一个类 测试这个进制转换的方法是没问题的,那怎么会有问题呢?android里你是通过这个方法将传入的汉字编码转换,测试里也是将传入的汉字转换,那是没有任何区别的。

解决方案 »

  1.   

    public String chineseToHexString(String str){
    Toast.makeText(getApplicationContext(), str, Toast.LENGTH_LONG).show();
    if(str==null || str.length()<=0){
    return "";
    }
        byte[] a=str.getBytes();  
        StringBuffer sb = new StringBuffer();
        for(int i=0; i<a.length; i++){
         sb.append(Integer.toHexString((256+a[i])%256) + " ");
        }
    return sb.toString();
    }
    在这个方法中呢,  str=“暂”;Toast时显示的(LogCat无法显示中文),而最后的Log.v("TaskSync", sb.toString());显示的却是“e6 9a 82”,很令人郁闷呐 
      

  2.   

    界面是用什么显示的?
    android编码的问题太挠头了。
    把取出来的数据转为utf-8呢?
      

  3.   


    我是在一个普通的JavaProject中测试这个转码方法是可以的  可是把这个方法拿来用在Android中就不行了, 那个方法我已经贴上去了哦 显示的时候是在ListActivity中的一个Item中显示的 这个Item也就是一个TextVeiw
    我在转码之前 还特意Toast一下,显示也是正常的, 转换过之后 就不行了
      

  4.   

    java的显示和android的不一样.....
    android只能正常显示GB编码的汉字,比如“暂” gb编码是D4DD,UTF-8编码是E6 9A 82,也就是你转换后的结果,所以你需要将转完后的16进制字符串再从UTF8转换成GB.....
      

  5.   

    你这转换方法就是GB2UTF8,你为什么要转?不用转吧
      

  6.   

    "界面显示“暂”字 正常,Toast“暂”字也正常,可是转换成十六进制去变成了“e6 9a 82”, 应该是“d4 dd”才对哦"是编码问题。
    就是说你函数输入的bytes是utf-8编码的,“暂”的utf-8码就是3个字节。如果你输入它的gbk或unicode16码的话,就对了。它的unicode16码是两个字节。
      

  7.   


    try {
    String str = "暂";
    byte[] data = str.getBytes();
    System.out.print("getBytes():Default ");
    for (int i = 0; i < data.length; i++) {
    System.out.print(Integer.toHexString(data[i]) + " ");
    }
    System.out.println();
    data = str.getBytes("utf-8");
    System.out.print("getBytes():UTF-8 ");
    for (int i = 0; i < data.length; i++) {
    System.out.print(Integer.toHexString(data[i]) + " ");
    }
    System.out.println();
    data = str.getBytes("gbk");
    System.out.print("getBytes():gbk ");
    for (int i = 0; i < data.length; i++) {
    System.out.print(Integer.toHexString(data[i]) + " ");
    }
    System.out.println();
    data = str.getBytes("gb2312");
    System.out.print("getBytes():gb2312 ");
    for (int i = 0; i < data.length; i++) {
    System.out.print(Integer.toHexString(data[i]) + " ");
    }
    System.out.println();
    } catch (Exception e) {
    e.printStackTrace();
    }
    Console:getBytes():Default ffffffe6 ffffff9a ffffff82 
    getBytes():UTF-8 ffffffe6 ffffff9a ffffff82 
    getBytes():gbk ffffffd4 ffffffdd 
    getBytes():gb2312 ffffffd4 ffffffdd