黑马程序员技术交流社区

标题: 为什么字符串中有中文,以字节形式写到文件中,却没有... [打印本页]

作者: 三生石    时间: 2014-3-1 16:30
标题: 为什么字符串中有中文,以字节形式写到文件中,却没有...

程序如下:
import java.io.*;
class FileOutputTest
{
        public static void main(String[] args) throws Exception
        {
                FileOutputStream fos=new FileOutputStream("d:\\FileOutput.txt");
                String msg="三生石_Sknishy";
                fos.write(msg.getBytes());
                fos.close();
        }
}

为什么字符串中有中文,以字节形式写到文件中,却没有乱码?求教……


作者: volvoxc    时间: 2014-3-1 16:43
getBytes方法使用了平台默认的字符集,将字符串编码为byte字节。用软件打开文件时,例如记事本,也会使用默认的字符集进行解码,所以,没有乱码啊。
作者: 平凡成就非凡    时间: 2014-3-1 18:36
乱码的由来,1是因为在编码和解码的过程用的是不同的编码表而造成的。2也有的是在文件数据的输入输出时,造成字节的获取不足。例如,当我们用以byte[]  buf=new byte[5];长度为5的字节数组,来作为缓冲存取以段数据“你们好啊”并打印,存取到“好”这个字我们才存到啦半个。也会出现乱码。3说个特例,“联通”这个词的,二进制表示时,即符合GBK码表也符合UTF-8码表。所以也会出现乱码。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2