java实现序列化时文件乱码(个人学习笔记)未解决

出现原因

机器只能识别二进制码,将字符编译为字节码需要使用字符集依据;

常见的字符集:gbk(英文、中文,windows默认–存储txt文件时注意转为utf—8,idea使用字符集为utf-8),utf-8(英文、中文、其他国家的符号)

所有字符集中都包含英文字符,且英文字符对应的编码都相同;所以英文不会乱码;

在读取文件时,文件的编码格式与java编译编码使用字符集不一致,输出的中文乱码;

解析时使用的字符集不含汉字编码

gbk中一个汉字占2个字节,utf-8中一个汉字占3个字节

并且对应的汉字编码不同,所以乱码

解决

使用一致的字符集

Person类:

package com.序列化;

import java.io.Serializable;

public class Person implements Serializable {
    int age;
    String name;
    String address;
    int salary;
    char sex;

    public void eat() {
        System.out.println("干饭人,干饭魂");
    }
}

Test类:

package com.序列化;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;

public class Test {
    public static void main(String[] args) {
        Person person = new Person();
        try {
            ObjectOutputStream objectOutputStream = new ObjectOutputStream(new FileOutputStream("person.txt"));
            objectOutputStream.writeObject(person);
            objectOutputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

效果:

java实现序列化时文件乱码(个人学习笔记)未解决_第1张图片

还是出现了乱码,我的所有编码都是以GBK实现,但还是乱码了。 

你可能感兴趣的:(java,乱码)