Java中UTF-8转GBK之所以不会出现中文乱码,是因为UTF-8编码为兼容性最大的字符集编码,它本身就支持中文字符。
Java代码转码范例:
String s = new String(ss.getBytes(),"GBK");
当你的内容本来就是正常的中文字符时,通过上面的语句转为GBK编码是不会有任何问题的,但如果你在转码之前的字符不是正确的中文字符,或者不是支持中文字符的字符集,那可能就会出现乱码问题。
UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码,又称万国码。由Ken Thompson于1992年创建。现在已经标准化为RFC 3629。UTF-8用1到6个字节编码UNICODE字符。用在网页上可以同一页面显示中文简体繁体及其它语言(如英文,日文,韩文)。
在Java开发中,特别是web开发,乱码是一种很常见而且很头疼的问题,这常常是由于页面端、服务端、数据库等几处所使用的字符不一致所致,故开发中,保持编码一致, 往往能减少由于乱码而带来的时间浪费,是一件非常重要的事情。
你这本来就是正常的,b = "大家一起来学习java".getBytes("GBK");的意思就是让这个字符串按照gbk的编码正常显示。
你应该这样测试,写出到encoding.txt的时候用gbk编码,你设置ssa.java文件的编码为utf-8,然后读取encoding.txt里面的内容不做转换,直接显示
亲爱童鞋,首先,乱码不是这么理解的。比如说前后台交互,发送方编码是UTF-8,接受方却是GBK,这样的话就会产生乱码,明白?就是说你的两边的编码格式不一致到时乱码产生。并不是说你这样转码之后就成乱码了。乱码的产生,和解决原理你没有明白。一般产出乱码的情况都是两边编码格式不一致导致的,所以你要清楚数据在交互过程中的底层编码。。。
眼睛有点花。。暂时不看代码先。。你都说utf-8转成gbk了,都经过转换了为什么会出现乱码?就像你打开utf-8的txt,另存为gbk的,不会出现乱码的啊!只有你读取方式错误的话会出现乱码
你把后面的.getBytes("GBK")去掉就知道会不会乱码了