有语句
String input = new String(x.getBytes("utf-8"),"gbk");
结果: "三只小熊".equals(input) == true;
求字符串x如有其它情况 也请说明 谢谢

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【deprecatedgb】截止到2008-06-23 16:41:35的历史汇总数据(不包括此帖):
    发帖数:8                  发帖分:210                
    结贴数:7                  结贴分:160                
    未结数:1                  未结分:50                 
    结贴率:87.50 %            结分率:76.19 %            
    楼主加油
      

  2.   

    看你的代码是要将x用utf-8编码,然后用gbk解码,然后赋值给input
      

  3.   


    public class TestEncodingString
    { public static void main( String[] args ) throws UnsupportedEncodingException
    {
    String bears = "三只小熊";
    String x = new String(bears.getBytes("gbk"),"utf-8");
    String result = new String( x.getBytes("utf-8"), "gbk" );
    System.out.println( "三只小熊".equals( x ));
    }}
    注意编译环境,也就是上文三只小熊这四个字的编码要是gbk
      

  4.   

    楼主注意一点,gbk中一个中文是二个字符,而在utf-8是三个
      

  5.   

    3L怎么让那4个字的编码是gbk
    我utf-8的工程是false的
      

  6.   

    这样运行,也设了gbk 貌似不行
    String bears = "三只小熊";
    String x = new String(bears.getBytes("gbk"), "utf-8");
    System.out.println(x);
    String result = new String(x.getBytes("utf-8"), "gbk");
    System.out.println("三只小熊".equals(result));
    结果:
    ��ֻС��
    false
      

  7.   

    String bears = "三只小熊"; 
    String x = new String(bears.getBytes("gbk"),"utf-8"); 
    System.out.println(x);
    String result = new String( x.getBytes("utf-8"), "gbk" ); 
    System.out.println( "三只小熊".equals( result )); 试过了 答案是
    �ֻС��
    false
    这样不对哦
      

  8.   

    不存在这种样子的 UTF-8 字符!首先“三只小熊”的 GBK 编码为:C8FD D6BB D0A1 D0DC拆成字节为:C8 FD D6 BB D0 A1 D0 DC根据 Unicode 与 UTF-8 编码转换规则:Unicode Code    UTF-8 Code
     0000~007F     0xxxxxxx
     0080~07FF     110xxxxx 10xxxxxx
     0800~FFFF     1110xxxx 10xxxxxx 10xxxxxx
    10000~10FFFF   11110xxx 10xxxxxx 10xxxxxx 10xxxxxx先从第一个字节 C8 开始看,C8 只能匹配第二行的转换,也就是采用两个字节,
    这时第一个字节匹配成功,再匹配后一个字节 FD,规范要求的第二个字节是
    10xxxxxx 因此 C8 FD 转换失败,C8 这时采用 UTF-8 的缺失字符 EF BF BD 即
    Unicode 的 U+FFFD 来替换,在我们的平台上显示为 ? 了。关于 U+FFFD,Unicode 的描述是:
    Replacement Character. A character used as a substitute for an uninterpretable
    character from another encoding. The Unicode Standard uses U+FFFD replacement
    character for this function.同理 FD 以及最后两个 D0 DC 也都不能进行转换,都被 EF BF BD 所替代。其中的 D6 BB 和 D0 A1 可以转换D6 BB 二进制数据为:11010110 10111011 正好能匹配 UTF-8 的双字节,
    去掉附加位为:10110 111011 再将其四位一组分开,即:0101 1011 1011
    这个也就是 Unicode 字符的 U+05BB 编码。这些编码可以到 Unicode 官方网站的数据库里查到:
    http://www.unicode.org/cgi-bin/GetUnihanData.pl同理,D0 A1 可以转成 Unicode 字符的 U+0421。由于 U+05BB 在 GBK 平台上没办法显示出来,因此根据系统规范也显示成为 ?(可能有些机器能够正常显示)
    U+0421 是个像 C 一样的字符,而 U+FFFD 则全部显示为 ?。由于 C8FD D6BB D0A1 D0DC 在 UTF-8 编码中并没有完全对应的字符,因此“三只小熊”的这个问题无解!这种词肯定是有的,但是非常难凑,得使用 GBK 编码表根据 UTF-8 的编码规范来找。
      

  9.   

    请问为什么UTF-8解码不出来却要去改变原字节数据?这样设计的目的是何?