Java读取TXT文本文件乱码解决方案

时间:2024.4.20

Java读取TXT文本文件乱码解决方案

今天在解析一个文本文件的时候出现了乱码,以前从未遇到,花了点时间解决了,在此总结一下:

首先,先看一下解析的代码:

private String[] getProjectData(File file){

} String[] data = null; try { } return data; BufferedReader br = new BufferedReader(new FileReader(file)); String str = br.readLine(); data = str.split("\t"); br.close(); e.printStackTrace(); e.printStackTrace(); } catch (FileNotFoundException e) { } catch (IOException e) {

这个方法很简单,就是获取txt文件中的一行数据,然后转换为数组,我这个文本中只有一行。就这种情况下获取到的str是乱码,我想出现乱码肯定是字符集编码的问题,然后自己新建了一个文本文档测试没有问题(开始用的文本时别的程序导出的),所以我估计是开始那个txt文件编码的问题,查看发现是Unicode编码(如何查看txt的编码呢,教你一个笨笨的办法:打开文件——另存为,然后看到最下面的编码,默认选择的就是当前文档的编码格式),问题就出现在这里。问题找到了就好解决了,修改代码为:

private String[] getProjectData(File file){

} String[] data = null; try { } return data; BufferedReader br = new BufferedReader(new String str = br.readLine(); data = str.split("\t"); br.close(); e.printStackTrace(); e.printStackTrace(); InputStreamReader(new FileInputStream(file),"UTF-16")); } catch (FileNotFoundException e) { } catch (IOException e) {

使用文件流读取,转换编码为“UTF-16”,这样乱码问题就解决了。

归纳一下:

txt文本文档有四种编码选项:ANSI、Unicode、Unicode big endian、UTF-8;默认应该是ANSI选项,就是系统的默认编码,一般是GBK,这种情况下用第一段代码解析是没有问题的,

也不需要转码;其他格式就需要用第二段代码对应转码了,Unicode对应UTF-16,UTF-8就不用说了。

关于获取txt文件编码,我们可能有时候需要用程序获取,动态判断,这里给一点资料,参考参考:

ANSI: 无格式定义

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

Unicode big endian: 前两字节为FEFF

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

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


第二篇:Java读取TXT文本文件乱码解决方案


Java读取TXT文本文件乱码解决方案

今天在解析一个文本文件的时候出现了乱码,以前从未遇到,花了点时间解决了,在此总结一下:

首先,先看一下解析的代码:

private String[] getProjectData(File file){

} String[] data = null; try { } return data; BufferedReader br = new BufferedReader(new FileReader(file)); String str = br.readLine(); data = str.split("\t"); br.close(); e.printStackTrace(); e.printStackTrace(); } catch (FileNotFoundException e) { } catch (IOException e) {

这个方法很简单,就是获取txt文件中的一行数据,然后转换为数组,我这个文本中只有一行。就这种情况下获取到的str是乱码,我想出现乱码肯定是字符集编码的问题,然后自己新建了一个文本文档测试没有问题(开始用的文本时别的程序导出的),所以我估计是开始那个txt文件编码的问题,查看发现是Unicode编码(如何查看txt的编码呢,教你一个笨笨的办法:打开文件——另存为,然后看到最下面的编码,默认选择的就是当前文档的编码格式),问题就出现在这里。问题找到了就好解决了,修改代码为:

private String[] getProjectData(File file){

} String[] data = null; try { } return data; BufferedReader br = new BufferedReader(new String str = br.readLine(); data = str.split("\t"); br.close(); e.printStackTrace(); e.printStackTrace(); InputStreamReader(new FileInputStream(file),"UTF-16")); } catch (FileNotFoundException e) { } catch (IOException e) {

使用文件流读取,转换编码为“UTF-16”,这样乱码问题就解决了。

归纳一下:

txt文本文档有四种编码选项:ANSI、Unicode、Unicode big endian、UTF-8;默认应该是ANSI选项,就是系统的默认编码,一般是GBK,这种情况下用第一段代码解析是没有问题的,

也不需要转码;其他格式就需要用第二段代码对应转码了,Unicode对应UTF-16,UTF-8就不用说了。

关于获取txt文件编码,我们可能有时候需要用程序获取,动态判断,这里给一点资料,参考参考:

ANSI: 无格式定义

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

Unicode big endian: 前两字节为FEFF

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

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

package com.syscan.oa.util;

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.File;

import java.io.FileNotFoundException;

import java.io.FileReader;

import java.io.FileWriter;

import java.io.IOException;

import java.util.ArrayList;

import java.util.List;

public class ReadWritTxtFileIO {

//

//

String path = "d:/file4.txt"; String[] str = writeToDat(path); System.out.println("str.length == " +str.length); for (int i = 0; i < str.length; i++) { } System.out.println(str[i]); String[] splitStr = str[i].split("#"); System.out.println("splitStr.length == " +splitStr.length); for(int j = 0; j < splitStr.length; j++) { } System.out.println(splitStr[j]); WriteDate(); public static void main(String[] args) { ReadDate(); //

BufferedWriter output = new BufferedWriter(new FileWriter(file)); file.createNewFile(); } file.delete(); try { File file = new File("D:/abc.txt"); if (file.exists()) { /** * 写入数据 */ @SuppressWarnings("unchecked") public static void WriteDate() { /** * 读取数据 */ public static void ReadDate() { } String url = "e:/2.txt"; try { } FileReader read = new FileReader(new File(url)); StringBuffer sb = new StringBuffer(); char ch[] = new char[1024]; int d = read.read(ch); while (d != -1) { } System.out.print(sb.toString()); e.printStackTrace(); e.printStackTrace(); String str = new String(ch, 0, d); sb.append(str); d = read.read(ch); } } catch (FileNotFoundException e) { } catch (IOException e) {

} } } ArrayList ResolveList = new ArrayList(); for (int i = 0; i < 10; i++) { } for (int i = 0; i < ResolveList.size(); i++) { } output.close(); System.out.println(ex); output.write(String.valueOf(ResolveList.get(i)) + "\n"); ResolveList.add(Math.random() * 100); } catch (Exception ex) { @SuppressWarnings("unchecked") public static String[] writeToDat(String path) { } File file = new File(path); List list = new ArrayList(); String[] str = null; try { } // 确定数组长度 str = new String[list.size()]; for (int i = 0; i < list.size(); i++) { } return str; String s = (String) list.get(i); str[i] = s; BufferedReader bw = new BufferedReader(new FileReader(file)); String line = null; // 因为不知道有几行数据,所以先存入list集合中 while ((line = bw.readLine()) != null) { } bw.close(); e.printStackTrace(); list.add(line); } catch (IOException e) {

更多相关推荐:
Java中文乱码的解决方案

Java中文乱码的解决方案jspServlet的形式在jsp页面向后台发送的请求里包含中文时后台采用StringnamerequestgetParameterquotnamequot接收到的是乱码我在网上找了很...

Java 中文乱码转码问题总结

Java中文乱码转码问题总结20xx0505170408分类java字号订阅在JSPServlet中主要有以下几个地方可以设置编码pageEncodingquotUTF8quotcontentTypequott...

对JavaJSP中文乱码问题解决心得

自从接触Java和JSP以来就不断与Java的中文乱码问题打交道现在终于得到了彻底的解决现将我们的解决心得与大家共享一Java中文问题的由来Java的内核和class文件是基于unicode的这使Java程序具...

java中处理乱码问题个人总结

个人总结java中处理乱码问题个人总结java乱码的问题的可谓是老生常谈了自从接触java以来就不断地与中文乱码的问题打交道最近的参与的报表工具开发中遇到的乱码问题更是让人头疼随着项目工作的进度自己总结了一下处...

JavaJSP中文乱码问题解决心得

JavaJSP中文乱码问题解决心得自从接触Java和JSP以来就不断与Java的中文乱码问题打交道现在终于得到了彻底的解决现将我们的解决心得与大家共享一Java中文问题的由来Java的内核和class文件是基于...

java中文乱码问题

Javaweb编程中经常遇到汉字的问题现在总结一下工程的编码模式是utf8我遇到的最多的问题就是通过由前台向后台传值解决方法就行后台接受的时候requestsetCharacterEncodingquotUTF...

Java中文乱码的解决方案

Java中文乱码的解决方案jspServlet的形式在jsp页面向后台发送的请求里包含中文时后台采用StringnamerequestgetParameterquotnamequot接收到的是乱码我在网上找了很...

java中文乱码的解决方法

方法一可用于和spring集成的解决中文乱码问题在webxml中配置方法二适用于和struts1集成的解决中文乱码问题用actionServlet解决中文乱码问题自定义一个Servlet继承apache的act...

解决tomcat中文乱码问题

一JSP页面上是中文但是看的是后是乱码解决的办法就是在JSP页面的编码的地方ltpagelanguagequotjavaquotcontentTypequottexthtmlcharsetGBKquotgt因为...

java中文乱码

Java乱码是因为Java和JSP源文件的保存方式是基于字节流的如果Java和JSP编译成class文件过程中使用的编码方式与源文件的编码不一致就会出现乱码在这里总结一下java乱码的一些常见情况1Javasc...

Java读取TXT文本文件乱码解决方案

Java读取TXT文本文件乱码解决方案今天在解析一个文本文件的时候出现了乱码以前从未遇到花了点时间解决了在此总结一下首先先看一下解析的代码privateStringgetProjectDataFilefileS...

java读取properties文件中文乱码的解决方法

java读取properties文件中文乱码的解决方法收藏java读取properties文件时如果包含中文那么该中文字段读出为乱码这是因为java中文件大多以UTF8或GBK的方式保存而java程序在读出pr...

java中文乱码解决总结(14篇)