A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© 禅伤 中级黑马   /  2014-8-4 10:25  /  962 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

代码如下:private static void writeUtf() throws IOException {
                DataOutputStream dos = new DataOutputStream(new FileOutputStream(
                                "f:\\data1.txt"));
                dos.writeUTF("你好");
                dos.close();
        }
        private static void writeU8Data() throws IOException {
                OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(
                                "f:\\data2.txt"), "utf-8");
                osw.write("你好");
                osw.close();
        }
        private static void writeGbkData() throws IOException {
                OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(
                                "f:\\data3.txt"), "gbk");
                osw.write("你好");
                osw.close();
        }

结果:
data1.txt      8字节
data2.txt      6字节
data3.txt      4字节

问:一个汉字不都是占两个字节吗,为何会产生如此差异?

3 个回复

倒序浏览
占几个字节跟编码有关。gbk的汉字2个字节,utf-8的汉字就是3个字节的
回复 使用道具 举报
fantacyleo 发表于 2014-8-4 10:34
占几个字节跟编码有关。gbk的汉字2个字节,utf-8的汉字就是3个字节的

还有一个占4个字节的呢
回复 使用道具 举报
禅伤 发表于 2014-8-4 11:48
还有一个占4个字节的呢

也正常啊。那是所谓的Modified UTF-8
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马