java字节流读txt文件出现乱码怎么解决?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java字节流读txt文件出现乱码怎么解决?相关的知识,希望对你有一定的参考价值。

要求用两个字节数组
用字节流

是不是要指定编码格式?

    首先获得一个文件句柄。File file = new File(); file即为文件句柄。两人之间连通电话网络了。接下来可以开始打电话了。

    通过这条线路读取甲方的信息:new FileInputStream(file) 目前这个信息已经读进来内存当中了。接下来需要解读成乙方可以理解的东西

    既然你使用了FileInputStream()。那么对应的需要使用InputStreamReader()这个方法进行解读刚才装进来内存当中的数据

    解读完成后要输出呀。那当然要转换成IO可以识别的数据呀。那就需要调用字节码读取的方法BufferedReader()。同时使用bufferedReader()的readline()方法读取txt文件中的每一行数据哈。

参考技术A 用字节流读包含中文的文件出现乱码是不可避免的,简单的想想:单第一个字为英文,第二个子为中文,而一个英文占1一个字节,一个中文占两个字节,当你用两个字节的的数组读取,中文字就会被拆分,这样就肯定会出现乱码。

给你个解决方法,我用的JDK1.5,完全解决了你的需求,代码如下:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

public class Start
public static void main(String[] args)
File fileS = new File("E:/123.txt");
if(!fileS.exists())
System.out.println ("找不到指定文件");
return;

FileInputStream fileIS = null;
try
fileIS = new FileInputStream(fileS);
byte[] byt = new byte[2];

int data = fileIS.read(byt);
for (; data != -1 ; )

int a=byt[0];

int b=byt[1];

if((a >= 0 && a <= 127) && (b > 127 || b < 0))

System.out.print ((char)a);

data = fileIS.read();

byt[0] = (byte)b;

byt[1] = (byte)data;



String str = new String(byt);

System.out.print (str);

data = fileIS.read(byt);

System.out.println ();

catch(FileNotFoundException ex)
ex.printStackTrace();
catch(IOException ex)
ex.printStackTrace();
finally
if (fileIS != null)

try

fileIS.close();

catch(IOException ex)

ex.printStackTrace();





参考技术B 简单 删除就好了

请大神帮忙解决一个用java解压缩一个zip压缩格式字节流中文内容乱码问题!

问题是这样的:我有一个现成的服务器程序,通过android程序来访问那个服务器,协议是TCP,服务器端发来的是按GB2312这个字符集的字节流,且在服务器端用zip格式压缩,现在的问题是:如果服务器端发来的没有中文内容,android这边解压缩很正常,如果服务器端发来的内容含有中文,这边除了非中文外,所有中文都是乱码,且我找了很多资料,也都没有解决,使用的关键代码是:

ByteArrayInputStream in = new ByteArrayInputStream(newbytes);//将字节数组转成输入流
ZipInputStream zipis=new ZipInputStream(in);

zipis.getNextEntry();//将输入流定位在当前entry数据项位置

DataInputStream dis=new DataInputStream(zipis);

//用ZIP输入流构建DataInputStream
str=dis.readLine();//

dis.close();//关闭文件

outSteam.close();

return str;

我想肯定是字符集的问题,但找了很多资料,都没有解决掉,请哪位大神,帮忙解决一下
注:我按网上有人说的修改zipinputstream.java这个类,自行添加一个字符集参数,没有成功,原因可能是,我现在用的java1.7上的zipinputstream里没有他们说的几个关键方法,且我看这个类里有一个可以带字符集参数的方法,但在我的开发环境里,怎么也找到不这个带参数的方法,不知是怎么回事儿

参考技术A 这个问题我有点印象,好像是包的问题。好像不能用zip的那个,换另一个包就好了。具体我也不记得了 参考技术B 服务器端一般不是采用的是gzip吗。

以上是关于java字节流读txt文件出现乱码怎么解决?的主要内容,如果未能解决你的问题,请参考以下文章

java 字符流 字节流

请大神帮忙解决一个用java解压缩一个zip压缩格式字节流中文内容乱码问题!

22.字符流

java字节流对汉字输出为乱码的问题

JAVA读取字节流

Servlet中文乱码解决方法