「javaio中文乱码」为什么java程序输中文乱码
本篇文章给大家谈谈javaio中文乱码,以及为什么java程序输中文乱码对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、java io乱码
- 2、java问题,被IO流中文乱码搞晕了
- 3、Java IO读取txt文件乱码。前提不知道文档是什么编码格式
- 4、JAVA为什么出现这种情况
- 5、如何解决Java IO读取文件中文乱码问题
- 6、java 文件IO 读取乱码问题
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中文乱码的信息别忘了在本站进行查找喔。