精华内容
下载资源
问答
  • java读取txt文件,如果编码格式不匹配,就会出现乱码现象。所以读取txt文件的时候需要设置读取编码。txt文档编码格式都是写在文件头的,在程序中需要先解析文件的编码格式,获得编码格式后,在按此格式读取文件就...

    c35cd08172b41b5e75182c322ca4a8c9.png

    java读取txt文件,如果编码格式不匹配,就会出现乱码现象。所以读取txt文件的时候需要设置读取编码。txt文档编码格式都是写在文件头的,在程序中需要先解析文件的编码格式,获得编码格式后,在按此格式读取文件就不会产生乱码了。(推荐:java视频教程)

    java编码与txt编码对应:

    e1b16ce12de181588592e1809d5fa8f0.png

    示例:package com.lfl.attachment;

    import java.io.BufferedReader;

    import java.io.File;

    import java.io.FileInputStream;

    import java.io.InputStream;

    import java.io.InputStreamReader;

    public class TextMain {

    public static void main(String[] args) throws Exception {

    String filePath = "D:/article.txt";

    // String filePath = "D:/article333.txt";

    // String filePath = "D:/article111.txt";

    String content = readTxt(filePath);

    System.out.println(content);

    }

    /**

    * 解析普通文本文件 流式文件 如txt

    * @param path

    * @return

    */

    @SuppressWarnings("unused")

    public static String readTxt(String path){

    StringBuilder content = new StringBuilder("");

    try {

    String code = resolveCode(path);

    File file = new File(path);

    InputStream is = new FileInputStream(file);

    InputStreamReader isr = new InputStreamReader(is, code);

    BufferedReader br = new BufferedReader(isr);

    // char[] buf = new char[1024];

    // int i = br.read(buf);

    // String s= new String(buf);

    // System.out.println(s);

    String str = "";

    while (null != (str = br.readLine())) {

    content.append(str);

    }

    br.close();

    } catch (Exception e) {

    e.printStackTrace();

    System.err.println("读取文件:" + path + "失败!");

    }

    return content.toString();

    }

    public static String resolveCode(String path) throws Exception {

    // String filePath = "D:/article.txt"; //[-76, -85, -71] ANSI

    // String filePath = "D:/article111.txt"; //[-2, -1, 79] unicode big endian

    // String filePath = "D:/article222.txt"; //[-1, -2, 32] unicode

    // String filePath = "D:/article333.txt"; //[-17, -69, -65] UTF-8

    InputStream inputStream = new FileInputStream(path);

    byte[] head = new byte[3];

    inputStream.read(head);

    String code = "gb2312"; //或GBK

    if (head[0] == -1 && head[1] == -2 )

    code = "UTF-16";

    else if (head[0] == -2 && head[1] == -1 )

    code = "Unicode";

    else if(head[0]==-17 && head[1]==-69 && head[2] ==-65)

    code = "UTF-8";

    inputStream.close();

    System.out.println(code);

    return code;

    }

    }

    注意:在resolveTxt方法中不能通过readTxt方法传InputStream流 ,这样会使两个方法持有同一个流引用,而在resolveTxt方法中已读过流中的三个字节,流中的pos此时已经是3了,而不是流的起始位置,再在readTxt中读取时就会出现IOException:Read Error。

    更多java知识请关注java基础教程栏目。

    展开全文
  • java 读取txt文件乱码

    2012-09-24 19:00:57
    private void msgTxt(){ ...InputStreamReader isr = new InputStreamReader(new FileInputStream("文件路径"), "UTF-8"); //设置为UTF-8 BufferedReader br = new BufferedReader(isr); String s1 = null; whi
    private void msgTxt(){

    try {
    InputStreamReader isr = new InputStreamReader(new FileInputStream("文件路径"), "UTF-8");   //设置为UTF-8
    BufferedReader br = new BufferedReader(isr);
    String s1 = null;
    while((s1 = br.readLine()) != null) {
           System.out.println(s1.toString());

    br.close();
    isr.close(); 
    } catch (FileNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
     
      }
    展开全文
  • 因为txt默认的选项是ANSI,即GBK编码。GBK和GB2312都是中文编码,在这里解释一下两者的区别。总体说来,GBK包括所有的汉字,包括简体和繁体。而gb2312则只包括简体汉字。GBK: 汉字国标扩展码,基本上采用了原来GB2312...

    因为txt默认的选项是ANSI,即GBK编码。GBK和GB2312都是中文编码,在这里解释一下两者的区别。

    总体说来,GBK包括所有的汉字,包括简体和繁体。而gb2312则只包括简体汉字。

    GBK:   汉字国标扩展码,基本上采用了原来GB2312-80所有的汉字及码位,并涵盖了原Unicode中所有的汉字20902,总共收录了883个符号,   21003个汉字及提供了1894个造字码位。   Microsoft简体版中文Windows   95就是以GBK为内码,又由于GBK同时也涵盖了Unicode所有CJK汉字,所以也可以和Unicode做一一对应。

    GB码,全称是GB2312-80《信息交换用汉字编码字符集 基本集》,1980年发布,是中文信息处理的国家标准,在大陆及海外使用简体中文的地区(如新加坡等)是强制使用的唯一中文编码。P-Windows3.2和苹果OS就是以GB2312为基本汉字编码, Windows 95/98则以GBK为基本汉字编码、但兼容支持GB2312。GB码共收录6763个简体汉字、682个符号,其中汉字部分:一级字3755,以拼音排序,二级字3008,以偏旁排序。该标准的制定和应用为规范、推动中文信息化进程起了很大作用。

    GBK编码是中国大陆制订的、等同于UCS的新的中文编码扩展国家标准。GBK工作小组于1995年10月,同年12月完成GBK规范。该编码标准兼容GB2312,共收录汉字21003个、符号883个,并提供1894个造字码位,简、繁体字融于一库。

    那么如何查看txt的编码呢,教你一个笨笨的办法:打开文件——另存为,然后看到最下面的编码,默认选择的就是当前文档的编码格式)。

    txt文本文档有四种编码选项:ANSI、Unicode、Unicode big endian、UTF-8;默认应该是ANSI选项,就是系统的默认编码,一般是GBK。

    因此我们读取txt文件可能有时候并不知道其编码格式,所以需要用程序动态判断获取txt文件编码,这里给一点资料,参考参考:

    ANSI: 无格式定义

    Unicode:  前两个字节为FFFE Unicode文档以0xFFFE开头

    Unicode big endian: 前两字节为FEFF

    UTF-8: 前两字节为EFBB UTF-8以0xEFBBBF开头

    用程序取出前几个字节并进行判断即可。

    首先对java中得编码格式进行了研究。发现在java中

    java编码与txt编码对应

    java

    txt

    unicode

    unicode big endian

    utf-8

    utf-8

    utf-16

    unicode

    gb2312

    ANSI

    java读取txt文件,如果编码格式不匹配,就会出现乱码现象。所以读取txt文件的时候需要设置读取编码。txt文档编码格式都是写在文件头的,在程序中需要先解析文件的编码格式,获得编码格式后,在按此格式读取文件就不会产生乱码了。

    代码示例如下:

    package com.lfl.attachment;

    import java.io.BufferedReader;

    import java.io.File;

    import java.io.FileInputStream;

    import java.io.InputStream;

    import java.io.InputStreamReader;

    public class TextMain {

    public static void main(String[] args) throws Exception {

    String filePath = "D:/article.txt";

    //String filePath = "D:/article333.txt";

    //String filePath = "D:/article111.txt";

    String content = readTxt(filePath);

    System.out.println(content);

    }

    /**

    * 解析普通文本文件 流式文件 如txt

    * @param path

    * @return

    */

    @SuppressWarnings("unused")

    public static String readTxt(String path){

    StringBuilder content = new StringBuilder("");

    try {

    String code = resolveCode(path);

    File file = new File(path);

    InputStream is = new FileInputStream(file);

    InputStreamReader isr = new InputStreamReader(is, code);

    BufferedReader br = new BufferedReader(isr);

    //char[] buf = new char[1024];

    //int i = br.read(buf);

    //String s= new String(buf);

    //System.out.println(s);

    String str = "";

    while (null != (str = br.readLine())) {

    content.append(str);

    }

    br.close();

    } catch (Exception e) {

    e.printStackTrace();

    System.err.println("读取文件:" + path + "失败!");

    }

    return content.toString();

    }

    public static String resolveCode(String path) throws Exception {

    //String filePath = "D:/article.txt";//[-76, -85, -71] ANSI

    //String filePath = "D:/article111.txt";//[-2, -1, 79] unicode big endian

    //String filePath = "D:/article222.txt";//[-1, -2, 32]unicode

    //String filePath = "D:/article333.txt";//[-17, -69, -65] UTF-8

    InputStream inputStream = new FileInputStream(path);

    byte[] head = new byte[3];

    inputStream.read(head);

    String code = "gb2312"; //或GBK

    if (head[0] == -1 && head[1] == -2 )

    code = "UTF-16";

    else if (head[0] == -2 && head[1] == -1 )

    code = "Unicode";

    else if(head[0]==-17 && head[1]==-69 && head[2] ==-65)

    code = "UTF-8";

    inputStream.close();

    System.out.println(code);

    return code;

    }

    }

    注意:在resolveTxt方法中不能通过readTxt方法传InputStream流 ,这样会使两个方法持有同一个流引用,而在resolveTxt方法中已读过流中的三个字节,流中的pos此时已经是3了,而不是流的起始位置,再在readTxt中读取时就会出现IOException:Read Error。

    展开全文
  • java读取txt文本中如含有中文,可能会出现乱码,解决方案是: 1.要统一编码,java工程的编码,txt文本编码,java工程中的java文本编码都统一为utf-8; 利用 InputStreamReader(new FileInputStream(fileUrl), “utf-...

    java读取txt文本中如含有中文,可能会出现乱码,解决方案是:
    1.要统一编码,java工程的编码,txt文本编码,java工程中的java文本编码都统一为utf-8;
    利用 InputStreamReader(new FileInputStream(fileUrl), “utf-8”)将文本再次设置为utf-8

    //1从源文件中逐行读,然后逐行写入目标文件
    	public static void fileCopyByLine1(String sourceFileName,String destFileName){
    		File f=new File(sourceFileName);
    		File i=new File(destFileName);
    		BufferedReader br=null;
    		BufferedWriter bw=null;
    		String str="";
    		try{
    			br=new BufferedReader(new InputStreamReader(new FileInputStream(f),"utf-8"));
    			bw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(i),"utf-8"));
    			while((str=br.readLine())!=null){
    				bw.write(str);
    				bw.newLine();
    			}
    			bw.flush();
    		}catch(FileNotFoundException e){
    			e.printStackTrace();
    			System.out.println("未找到文件!");
    		}catch(IOException e){
    			e.printStackTrace();
    			System.out.println("读写错误!");
    		}finally{
    			try{
    				if(bw!=null) bw.close();
    			}catch(IOException e){
    				e.printStackTrace();
    				System.out.println("关闭包装目标文件失败!");
    			}
    			try{
    				if(br!=null) br.close();
    			}catch(IOException e){
    				e.printStackTrace();
    				System.out.println("关闭包装源文件失败!");
    			}
    		}
    	}
    

    2.由于字节流以字节为单位获取数据,识别中文字符时会出现乱码,而字符流采用Unicode编码,可转换字符集,故用字符流如FileReader,FileWriter获取文本数据。

    //2从源文件中逐字符读,然后逐字符写入目标文件
    	public static void fileCopyByChar(String sourceFileName,String destFileName){
    		FileReader fr=null;
    		FileWriter fw=null;
    		int len=0;
    		char []str=new char[1024];
    		try{
    			fr=new FileReader(sourceFileName);
    			fw=new FileWriter(destFileName);
    			while((len=fr.read(str))!=-1){
    				fw.write(str, 0, len);
    			}
    		}catch(FileNotFoundException e){
    			e.printStackTrace();
    			System.out.println("未找到文件!");
    		}catch(IOException e){
    			e.printStackTrace();
    			System.out.println("读写错误!");
    		}
    		finally{
    			try{
    				if(fw!=null) fw.close();
    			}catch(IOException e){
    				e.printStackTrace();
    				System.out.println("关闭目标文件失败!");
    			}
    			try{
    				if(fr!=null) fr.close();
    			}catch(IOException e){
    				e.printStackTrace();
    				System.out.println("关闭源文件失败!");
    			}
    		}
    	}
    
    展开全文
  • java读取txt文件乱码解决方案

    千次阅读 2019-03-26 14:50:19
    2017年09月19日 14:42:52 sysmedia 阅读数:2421 ...因为txt默认的选项是ANSI,即GBK编码。GBK和GB2312都是中文编码,在这里解释一...
  • 一、相关知识说明:  1. txt默认的选项是ANSI,即GBK... 我们在读取txt文件时可能不知道其编码格式,所以需要动态判断获取txt文件编码进而避免读取乱码问题   二、编码格式说明:  ANSI: 无格式定义   Unic...
  • java读取txt文件时出现中文乱码怎么解决发布时间:2020-06-25 15:27:31来源:亿速云阅读:105作者:Leahjava读取txt文件时出现中文乱码怎么解决?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助...
  • import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.InputStreamReader;public class Utils {public static void main(String arg[]) {try {String en...
  • 这是代码,在执行show命令时,D:\\StoreHouse.txt明明有中文,为什么显示的是一堆乱码,为什么,乱码如下: Please input your command: show 0001;�չ����;�������չ��;SR01;100 0001;�չ����;...
  • 问题描述:我要实现的就是将txt文件中的内容按一定格式读取出来后,存放在相应的数组。我刚开始运行时发现,英文可以实现,但是中文字符就是各种乱码。最后各种检查排错得到原因如下:(1)最好先检查你的Eclipse中的...
  • 从SDCard保存的txt文件读取中文到android系统中会出现乱码问题,如何解决这个乱码问题,网上有不少解答方法,譬如说利用String temp1 =EncodingUtils.getString(strLine.getBytes(),"GB2312"); 但并非对所有的情况都...
  • ##java读取本地的txt文件乱码 inputStreamReader()加上gbk参数 public class Adddot { public static void main(String[] args) { File file = new File(“C:\Users\guozhiyuan\Desktop\filter.txt”); int countor ...
  • try {System.out.println("以字符为单位读取文件内容,一次读一个字节:");// 设置编码方式为UTF-8reader = new InputStreamReader(new FileInputStream(file),"UTF-8");int tempchar;while (...
  • 1、JAVA读取文件,避免中文乱码。/*** 读取文件内容** @param filePathAndName* String 如 c:\\1.txt 绝对路径* @return boolean*/public static String readFile(String filePathAndName) {String fileContent = "...
  • 当使用文件读取文本文件时,如果遇到中文字符,将会读到乱码.偶然的一次在一本参考书看到 用byte数组存储读取结果,再用byte数组构建字符串,可解决乱码问题,试了一下,果然见效了,于是写了下面一个简单的类,以备用./**...
  • Java读取TXT文本文件乱码解决方案.doc

    热门讨论 2011-02-13 23:49:33
    Java读取TXT文本文件乱码解决方案.doc
  • java读取txt文件出现中文乱码

    万次阅读 2018-11-10 17:11:22
    在保证代码没有问题的前提下,读取txt文件出现了如下乱码。 解决方法: 1.查看文件代码的编码方式是否是ANSI(我使用的文本编辑器为EditPlus) 2.查看.txt文件的编码方式是否是ANSI 修改保存,结果如下 ...
  • Java读取TXT文本文件乱码解决方案下载
  • 前提是所读取文件时UTF-8编码,如果不是,可以文件另存为时修改编码为UTF-8编码,这样的话就不会中文乱码了。package com.io;import java.io.FileInputStream;import java.io.FileNotFoundException;import java....
  • JAVA_IO_FileReader读取txt文件乱码问题

    千次阅读 2018-11-16 17:26:20
    今天使用FileReader读取txt文件,java后台一直乱码,搞了好久才解决,在此记录一下.   Java中的字符流处理的最基本的单元是Unicode码元(大小2字节),分为Reader-读取,Writer-写入,它通常处理文本数据如.txt,.html等...
  • package ...import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.In...
  • java读取txt文件

    2013-09-02 17:32:45
    java 读取txt文件,文件中包含汉字和英文。并且含有乱码处理的方法。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 409
精华内容 163
关键字:

java读取txt文件乱码

java 订阅