关于字节流读取文本数据

在使用字节流读取文本内容后,将读取内容打出到控制台,发现乱码。
但是将改文本文件内容复制到另一个文本文件中时,内容正常显示汉字。

 FileInputStream fis =new FileInputStream("C:\\Users\\PCTC\\Desktop\\file\\map.txt");
 FileOutputStream fos = new FileOutputStream("C:\\Users\\PCTC\\Desktop\\file\\map1.txt");
 	int by ;
            while ((by = fis.read()) != -1){
                System.out.print((char)by);
                fos.write(by);
            }
            fis.close();
            fos.close();

因为复制文件时是读取一个字节写入一个字节。然后最终根据这些字节流拼成汉字。

	一个汉字存储:
	如果是GBK编码,占用2个字节
	如果是UTF - 8编码,占用3个字节
public static void main(String[] args)  throws UnsupportedEncodingException {

//        String a = "abc";
//        byte[] bys =a.getBytes();   //[97, 98, 99]
        String s = "中国";
//        byte[] bys = s.getBytes();  [-28, -72, -83, -27, -101, -67]
//        byte[] bys = s.getBytes("Utf-8");   [-28, -72, -83, -27, -101, -67]
        byte[] bys = s.getBytes("GBK");//[-42, -48, -71, -6]
        System.out.println(Arrays.toString(bys));
    }

**

采用何种规则编码,就要采用对应规则解码,否则就会出现乱码

**

		String s = "中国";
		
        byte[] bys = s.getBytes("Utf-8"); 
        
        System.out.println(Arrays.toString(bys));
        
        String sa = new String(bys,"Utf-8");
        
        System.out.println(sa);

输入结果为

[-28, -72, -83, -27, -101, -67]

中国

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值