java-中文字符

2021-03-03 04:27

阅读:1149

标签:package   tst   png   rgs   alt   code   保存   显示   是什么   

用FileInputStream 字节流正确读取中文

 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就不会出现乱码了。总之,编码方式要匹配才能正确地显示中文字符


用FileReader 字符流正确读取中文

 

 

 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 }

 

java-中文字符

标签:package   tst   png   rgs   alt   code   保存   显示   是什么   

原文地址:https://www.cnblogs.com/wangqianming12138/p/14398530.html


评论


亲,登录后才可以留言!