首选需要理解unicode:为了把全世界人民所有的所有的文字符号都统一进行编码,于是制定了UNICODE标准字符集,没有什么编码规则,只是编码和字符一一对应,在java内存中,string类型的字符就是以unicode的形式存在内存中,所以,在debug的时候,string既不属于gbk,也不属于utf-8和其他的编码格式。
知道这个问题以后,很多编码问题就可以迎刃而解:
既然知道java内存中是用unicode存储字符,可以得出,gbk编码:str.getBytes("GBK"),就是将unicode类型的char数组转化成对应编码类型的byte数组,而new String(byte,"UTF-8")就是将对应编码GBK类型的数组,转化成uniCode格式,也就是我们的编译器理解的格式。
在编写程序时最好将编码格式显示的设定好,这样可以确定的得出程序提供给外界的流的编码格式,而java的默认编码格式,经工作中验证,就是java在启动时main函数所在文件的编码格式。