「javaio中文乱码」为什么java程序输中文乱码

博主:adminadmin 2022-12-30 00:18:11 551

本篇文章给大家谈谈javaio中文乱码,以及为什么java程序输中文乱码对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

java io乱码

readChar读取的约定是 此输入流的下两个字节,将它们解释为一个 char。

下面是DataInputStream里readChar方法的源码是这样写的

    public final char readChar() throws IOException {

        int ch1 = in.read();

        int ch2 = in.read();

        if ((ch1 | ch2)  0)

            throw new EOFException();

        return (char)((ch1  8) + (ch2  0));

    }

readByte是读取一个字节,然后你手工把他变为char

下面是DataInputStream里readByte方法的源码是这样写的

    public final byte readByte() throws IOException {

        int ch = in.read();

        if (ch  0)

            throw new EOFException();

        return (byte)(ch);

    }

所以一个是乱码一个不是,因为他们的约定不一样

API里已经有解释了,再看一下源码既更清楚

如果是读取文本,推荐使用java.io.Reader里的方法,例如:FileReader

java问题,被IO流中文乱码搞晕了

你读取用utf-8,那如果你txt文本是用其它的编码方式肯定会出现乱码

你字节流一次读取一行,这样转化就不会出现一个字符的两个字节被分开读取并输出的状况,不会出现乱码

utf-8 是可变长编码,如果你程序选择的编码方式是定长编码方式,读取字符时肯定是会出现乱码

Java IO读取txt文件乱码。前提不知道文档是什么编码格式

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

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

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

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

JAVA为什么出现这种情况

操作系统 在dos状态下的默认字符编码为gbk,Java默认的字符编码为unicode,所以会出现乱码。

解决办法:

1、将字符串先按指定的编码“gbk”转换为字节

"张三".getBytes("gbk")

2、再将转换后的字节内容转换为对应字符编码"gbk"的字符串输出

System.out.println(new String("张三".getBytes("gbk"),"gbk"));

3 实例代码如下:

import java.io.UnsupportedEncodingException;

public class Hello{

public static void main(String[] args){

try {

System.out.println(new String("张三".getBytes("gbk"),"gbk"));

} catch (UnsupportedEncodingException e) {

e.printStackTrace();

} }

}

如何解决Java IO读取文件中文乱码问题

/** * 读取文件内容 * * @param filePathAndName String 读取文件路径 * @return String 文件中的内容 */ public static String readFile(String filePathAndName) { String fileContent = ""; try { File f = new File(filePathAndName); if(f.isFile()f.exists()){ InputStreamReader read = new InputStreamReader(new FileInputStream(f),"UTF-8"); BufferedReader reader=new BufferedReader(read); String line; while ((line = reader.readLine()) != null) { fileContent += line; } read.close(); } } catch (Exception e) { System.out.println("读取文件内容操作出错"); e.printStackTrace(); } return fileContent; } 2、JAVA写入文件,避免中文乱码。 /** * 写文件 * * @param filePathAndName String 写文件路径 * @param fileContent String 需要写入的内容 */ public static void writeFile(String filePathAndName, String fileContent) { try { File f = new File(filePathAndName); if (!f.exists()) { f.createNewFile(); } OutputStreamWriter write = new OutputStreamWriter(new FileOutputStream(f),"UTF-8"); BufferedWriter writer=new BufferedWriter(write); //PrintWriter writer = new PrintWriter(new BufferedWriter(new FileWriter(filePathAndName))); //PrintWriter writer = new PrintWriter(new FileWriter(filePathAndName)); writer.write(fileContent); writer.close(); } catch (Exception e) { System.out.println("写文件内容操作出错"); e.printStackTrace(); } }

java 文件IO 读取乱码问题

比较简单的做法,利用FileReader。参见代码:

测试文件: b.txt

IoTest.java

运行结果:

javaio中文乱码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于为什么java程序输中文乱码、javaio中文乱码的信息别忘了在本站进行查找喔。