我需要将一段utf-8编码格式的字符串转换成gbk格式,但是由于utf-8编码中有的字符转换成gbk之后不能正常显示,我需要在转换过程中对不能正确显示的字符去掉,只保留能够正确转换的部分,应该怎么做呢?请求各位的帮忙。

解决方案 »

  1.   

    我想应该可以判断一个字符是不是超过了gbk的范围吧?
    学习一下
      

  2.   

    用正则式,unicode,过滤掉gbk以外的字符
      

  3.   

    String str = "我クスクスと笑われちゃった们abd发";
    str = str.replaceAll("[^\u4e00-\u9fa5]+", "");//过滤非中文字符,换成gbk的编码范围
    System.out.println(str);
      

  4.   

    Copyright © 1996-107 SINA Corporation, All Rights ReservedCopyright ? 1996-107 SINA Corporation, All Rights Reserved43 6f 70 79 72 69 67 68 74 20 a9 20 31 39 39 36 2d 31 30 37 20 53 49 4e 41 20 43 6f 72 70 6f 72 61 74 69 6f 6e 2c 20 41 6c 6c 20 52 69 67 68 74 73 20 52 65 73 65 72 76 65 64 就是在问号的位置,有一个不能显示的字符,在unicode编码下是a9 00,转换成gbk格式变成单字节a9,使用楼上的方法没能将它去掉。line = line.replaceAll("[^\u8140-\ufefe]+", "");//过滤非gbk编码范围内的字符
    System.out.println(line);楼上的星星帮我看看吧,多谢了