有语句
String input = new String(x.getBytes("utf-8"),"gbk");
结果: "三只小熊".equals(input) == true;
求字符串x如有其它情况 也请说明 谢谢
String input = new String(x.getBytes("utf-8"),"gbk");
结果: "三只小熊".equals(input) == true;
求字符串x如有其它情况 也请说明 谢谢
楼主【deprecatedgb】截止到2008-06-23 16:41:35的历史汇总数据(不包括此帖):
发帖数:8 发帖分:210
结贴数:7 结贴分:160
未结数:1 未结分:50
结贴率:87.50 % 结分率:76.19 %
楼主加油
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
我utf-8的工程是false的
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
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
这样不对哦
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 的编码规范来找。