标签:package tst png rgs alt code 保存 显示 是什么
1 package IO流; 2 3 import java.io.File; 4 import java.io.FileInputStream; 5 import java.io.IOException; 6 7 public class 读取中文 { 8 public static void main(String[] args) { 9 File f=new File("D://1.txt"); 10 try(FileInputStream fs=new FileInputStream(f)){ 11 byte[] bytes=new byte[(int)f.length()]; 12 fs.read(bytes); 13 String str=new String(bytes,"UTF-8"); 14 System.out.println(str); 15 }catch(IOException e){ 16 e.printStackTrace(); 17 } 18 } 19 }
记事本中使用的编码方式是什么,在输出的时候就要设置成什么,比如记事本保存的方式是UTF-8,那么编程的时候就要设置成UTF-8格式,这样才能正确的显示结果。
java本身自带的编码方式是GBK,如果代码中第13行改写成String str=new String(bytes); 最后的显示结果就是乱码。当然,将记事本的保存方式也设置成GBK就不会出现乱码了。总之,编码方式要匹配才能正确地显示中文字符
1 package IO流; 2 3 import java.io.File; 4 import java.io.IOException; 5 import java.io.FileInputStream; 6 import java.io.FileReader; 7 8 public class 读取中文2 { 9 public static void main(String[] args) { 10 File f=new File("D://1.txt"); 11 try(FileReader fr=new FileReader(f)){ 12 char[] word=new char[(int)f.length()]; 13 fr.read(word); 14 System.out.println(new String(word));//只有在文本文档设置成GBK编码方式的时候才不会出现乱码 15 }catch(IOException e) { 16 e.printStackTrace(); 17 } 18 } 19 20 }
1 package IO流; 2 3 import java.io.File; 4 import java.io.IOException; 5 import java.io.FileInputStream; 6 import java.io.FileReader; 7 import java.io.InputStreamReader; 8 import java.nio.charset.Charset; 9 10 public class 读取中文2 { 11 public static void main(String[] args) { 12 File f=new File("D://1.txt"); 13 try(InputStreamReader isr=new InputStreamReader(new FileInputStream(f),Charset.forName("UTF-8"))){ 14 //因为FileInputStream不能改变读入的编码方式,所以如果想读取非GBK的编码方式的文件,需要使用InputStreamReader方法,设置编码方式为文本文档的编码方式 15 char[] word=new char[(int)f.length()]; 16 isr.read(word); 17 System.out.println(new String(word)); 18 }catch(IOException e) { 19 e.printStackTrace(); 20 } 21 } 22 }
标签:package tst png rgs alt code 保存 显示 是什么
原文地址:https://www.cnblogs.com/wangqianming12138/p/14398530.html