OutputStream流写入中文乱码问题
OutputStream流写入中文乱码问题
FileOutputStream流 的 write() 方法,写入英文没有问题,中文就变乱码。
原因是该流时字节流,只能写入字节。
而在UTF-8编码中,英文、数字为1字节,汉字为3字节。
解决方案1:将写入的字符串进行编码,然后再存储即可。
编码方法:
String str = "我爱你中国";
byte[] b = str.getBytes();
【案例】将中文字符串通过OutputStream流写入到文件内
public class Demo3 {
public static void main(String[] args) throws IOException {
File f = new File("File/myFile.txt");
f.createNewFile();
OutputStream s1 = new FileOutputStream("File/myFile.txt");
String str = "我爱我凡";
byte[] b = str.getBytes(StandardCharsets.UTF_8);
for (int i = 0; i < b.length; i++) {
s1.write(b[i]);
}
s1.close();
}
}
成功写入~
解决方法2:直接用字符流FileWriter写入,该流写入字符,一劳永逸。