/*
是记事本解码的问题。当用记事本存入”联通“二字时,记事本会用Windows系统默认的编码方式去存,
在简体中文操作系统中默认的本地字符集编码是GBK编码,所以记事本就将”联通“二字用GBK编码的形式
解析成二进制数据存入电脑硬盘中。
而当打开的时候,因为”联通“这两个字的二进制编码形式正好符合了UTF-8的编码形式。
下面是如下程序的运行结果:
-63
11000001
-86
10101010
-51
11001101
-88
10101000
UTF-8中的编码参考:API文档中java.io----->DataInputStream------>readUTF(DataInput in):UTF-8修改版
看以上转成的4段二进制码,都符合了UTF-8的开头特征:
110开头
10开头
110开头
10开头
这四段的二进制码横着连起来,用GBK来解结果就是"联通",如果用UTF-8来解,结果就未知了!
*/
class UnicomDemo
{
public static void main(String[] args) throws Exception
{
String str ="联通";
byte[] by = str.getBytes("GBK");
for(byte b :by)
{
//使用String的getBytes()方法,将“联通”转为4个字节的表示:
System.out.println(b);
//得到二进制码:
System.out.println(Integer.toBinaryString(b&255));
}
}
} |