JAVA为何把汉字变成了3个字节? java编码乱码string 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用utf-8使用中文就会占用3个字节,英文的话只有一个字节 如果是unicode则都是2个字节, gbk,一个汉字字符也是2个字节 谢谢楼上的回答~但我用的就是GBK,还是是三个字节。 从代码看,你用了GBK,那么可以肯定是双字节。是哪里让你认为是3字节那?之后我对payloadbyte数组每1500个分一组。然后拷贝到另一个叫preparetostring的byte[]数组中。把编码发出来吧,这里肯定不是1500一组,应该是1000一组。 你用的环境是什么编码,和i/o也有关系;另外你可以强制性的将输入输出的编解码设置为相同格式,不要采用默认的格式;下面是关于Java中汉字编解码的分析,你可以参考一下http://www.ibm.com/developerworks/cn/java/j-lo-chinesecoding/ 编码在后面很乱~这么说吧:后面我打印出了payloadbyte.length的值,是8852,而我读入的文本,用word数字数是2948。差不多就是三倍(文档里很少出现数字,且没有字母)。我觉得是不是我读取文本的时候读入流用的不合适? 给你解释一下其中的编码转换关系吧:new InputStreamReader(new FileInputStream(filefca),"GBK"),这里使用GBK编码来读取文件内容,所以文件如果也是GBK编码,就不会产生乱码;linefca=payload.toString();内部调用的是new String()方法,采用的是系统默认编码;byte[] payloadbyte=linefca.getBytes();这句使用系统默认编码,将字符串解码为byte数组;系统的默认编码一般为GBK,根据你说的情况,我觉得可能是你的系统的默认编码不是GBK。System.getProperty("file.encoding");//获取java环境默认编码 对Java编译器的选择? 出现下列错误异常一般是什么原因 时间不多了,这个方法不会写? 想翻译 第七版 《Java核心技术 卷II:高级特性》,目前已翻译第一章前四节 【求助】 JEditorPane 如何设置光标在指定行? 解析xml的问题 关于addxxxlistener的问题 怎样做出的JTextArea有UltraEdit那样,有单行加亮的那种效果 请大家给些不同的思路,加分不是问题 哪位大神帮小弟做个小程序啊,我是新手,做这个题很费劲 求个java取系统时间的函数
但我用的就是GBK,还是是三个字节。
是哪里让你认为是3字节那?
之后我对payloadbyte数组每1500个分一组。然后拷贝到另一个叫preparetostring的byte[]数组中。把编码发出来吧,这里肯定不是1500一组,应该是1000一组。
下面是关于Java中汉字编解码的分析,你可以参考一下
http://www.ibm.com/developerworks/cn/java/j-lo-chinesecoding/
我觉得是不是我读取文本的时候读入流用的不合适?
new InputStreamReader(new FileInputStream(filefca),"GBK"),这里使用GBK编码来读取文件内容,所以文件如果也是GBK编码,就不会产生乱码;
linefca=payload.toString();内部调用的是new String()方法,采用的是系统默认编码;
byte[] payloadbyte=linefca.getBytes();这句使用系统默认编码,将字符串解码为byte数组;
系统的默认编码一般为GBK,根据你说的情况,我觉得可能是你的系统的默认编码不是GBK。
System.getProperty("file.encoding");//获取java环境默认编码