转换流处理乱码
发布日期:2021-07-26 18:44:02 浏览次数:6 分类:技术文章

本文共 1714 字,大约阅读时间需要 5 分钟。

转换流:字节流转为字符流,处理乱码(编码集、解码集)

1.编码与解码概念
 编码:字符 ---编码字符集->二进制
 解码:二进制--解码字符集->字符
 2.乱码原因:
 1)编码与解码的字符集不统一
 2)字节缺少,长度丢失
 举例:一个汉字由两个字节组成,如果长度只能读1个,就会乱码

package IOCoversion;import java.io.UnsupportedEncodingException;public class CoversionDemo1 {	public static void main(String[] args) throws UnsupportedEncodingException{		String str="中国"; 		//编译 char-->byte		byte[] data=str.getBytes();		//编码与解码字符集统一		//解码		System.out.println(new String(data));		data=str.getBytes("gbk");//设定编码字符集		//不统一出现乱码		System.out.println(new String(data));		//编码		byte[] data2="中国".getBytes("utf-8");		//解码		str=new String (data2,"utf-8");		System.out.println(str);	}}

 

package e_IOCoversion;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.io.Reader;import java.io.UnsupportedEncodingException;/** * 转换流:字节转为字符 * 1、输出流 OutputStreamWriter 编码 * 2、输入流InputStreamReader 解码 * @author john * */public class CoversionDemo2 {	//指定解码字符集	public static void main(String[] args) throws IOException {		BufferedReader br=new BufferedReader(				new InputStreamReader(						new FileInputStream(new File("G:/iotest/IOCoversion/b.txt")),"UTF-8")				);		String info=null;		while(null!=(info=br.readLine())){			System.out.println(info);		}		//写出文件		BufferedWriter bw=new BufferedWriter(				new OutputStreamWriter(				        new FileOutputStream(new File("G:/iotest/IOCoversion/bb.txt"),true))				);		String str="我不喜欢你皮";		bw.write(str);		bw.flush();		br.close();		bw.close();			}}

 

转载地址:https://blog.csdn.net/qq_41877184/article/details/93974893 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:反射中类的加载与Class对象的联系
下一篇:缓冲流常用代码和细节

发表评论

最新留言

第一次来,支持一个
[***.219.124.196]2024年04月22日 20时28分16秒