原因2:比如说,在编码时用,但在解码时可能用的是GBK
Java中编码和解码的代码实现方法名说明
byte[ ] ()
使用默认方式进行编码(ieda默认用UTF-8,默认使用gbk)
byte[ ] ( )
使用指定方式进行编码
方法名说明
(byte[ ] bytes)
使用默认方式进行解码
(byte[ ] bytes, )
使用指定方式进行解码
public static void main(String[] args) throws UnsupportedEncodingException {//编码String str="ox欧肖";//默认方式byte[] bytes1 = str.getBytes();//指定方式byte[] bytes2 = str.getBytes("GBK");System.out.println(Arrays.toString(bytes1));System.out.println(Arrays.toString(bytes2));//[111, 120, -26, -84, -89, -24, -126, -106]//[111, 120, -59, -73, -48, -92]//解码//默认方式解码String str2=new String(bytes1);//使用指定方式解码,如果编码与解码不同,就会出现乱码String str3=new String(bytes1,"GBK");String str4=new String(bytes2,"GBK");System.out.println(str2);System.out.println(str3);System.out.println(str4);//ox欧肖//ox娆ц倴//ox欧肖}
字符流
字符流的底层就是字节流
字符流=字节流+字符集
字符流使用场景:对于纯文本文件进行读写操作
(字符输入流)
1.创建字符输入流对象(构造方法)
方法名说明
(File file)
创建字符输入流关联本地文件
( )
创建字符输入流关联本地文件
注意:读取的文件不存在会直接报错
2.读取数据(成员方法)
方法名说明
int read()
读取数据,读到末尾返回-1
int read(char[ ] )
读取多个数据,读到末尾返回-1
注意:
1.按字节进行读取,遇到中文,一次读多个字节,读取后编码,返回一个整数
2. 读到文件末尾了,read方法返回-1
3.释放资源
还是close方法
public static void main(String[] args) throws IOException {//空参的read方法File file=new File("D:\\我的世界\\a1.txt");FileReader reader1=new FileReader(file);//file对象的形式传递FileReader reader2=new FileReader("D:\\我的世界\\a1.txt");//字符串的形式传递int ch ;//字符流的read方法也是一个一个的读取字节,遇到中文一次读取多个//在底层会进行解码把读取到的数据转成10进制并且返回//这个返回的数据就是字符集上对应的10进制数字//如果想看到中文就用(char)强转就行了while ((ch=reader1.read())!=-1){System.out.print((char)ch);}reader1.close();//殷勤昨夜三更雨,又得浮生一日凉 。——《鹧鸪天·林断山明竹隐墙》//带参的read方法 read(char[] buffer)//带参的read方法将读取数据,解码,强转数据进行合并//将强转得到的字符都放到数组中//带参的返回值还是读取的元素个数char[]arr=new char[2];//表示一次读取两个数据int len;//表示当前读到了第几个while((len=reader2.read(arr))!=-1){//这里的new String可以把数组里的元素转成字符串//第二个参数是要开始转化的起始索引,第三个参数就是终止索引System.out.print(new String(arr,0,len));}//殷勤昨夜三更雨,又得浮生一日凉 。——《鹧鸪天·林断山明竹隐墙》}
(字符输出流)方法名说明
(File file)
创建字符输出流关联本地文件
( )
创建字符输出流关联本地文件
(File file, )
创建字符输出流关联本地文件,续写
( , )
创建字符输出流关联本地文件,续写
前两种方式是默认关闭续写的,即如果在创建对象时文件内存在数据,会先清空文件内的数据再写,
后面的方式可以打开续写开关,true就是打开续写开关
方法名说明
void write(int c)
- 央视春晚,我眼中的三宗“最” 中国之最节目串词
- 新闻特写拯救“巴斯”:吉尼斯纪录背后的“世界难题” 一 吉尼斯记录心情低落
- 这5种食物是隐藏的“热量炸弹”,小心吃完伤肝脏、毁血管、减寿命 吉尼斯记录热量炸弹
- 全世界“最顶级”的啤酒,却是一群和尚酿的!看完颠覆认知 吉尼斯记录的啤酒
- 视印度女子教育为“新鲜事”的环境下,塞兰坡差会建立的女子学校 吉尼斯记录印度学校
- 十二生肖:成龙的国际影响力能有多大?一部电影让法国归还文物 吉尼斯记录成龙
- 泰勒破纪录共获29座奖杯,身披粉红战袍热辣开唱,逆天长腿太吸睛 泰勒的吉尼斯记录
- 王者荣耀:真相了,排位赛真的段位越高越好打,因为低段位事真多 王者荣耀七大历史之最
- 欧洲杯巡礼之葡萄牙:C罗最后的倔强!卫冕冠军遭法德围剿 葡萄牙欧洲杯历史之最
- 盘点那些不符合发明者想法的发明,你知道几个? 坊子历史之最是谁发明的