java 读取文件流乱码输出乱码

Posted

tags:

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

File f1 = new File ("a.txt");
FileInputStream is=new FileInputStream(f1);
int i;
while((i=is.read())!=-1)
System.out.print((char)(i));

如果你全是中文的话,中文是两个字节,那么可以采用两个字节一起读,如果你中英文交叉的文本,那就不好办了,只能把文本一次性全都读进来再输出。

纯中文读取:
File f1 = new File ("a.txt");
FileInputStream is=new FileInputStream(f1);
int i;
byte[] b =new byte[2];
while((i=is.read(b))!=-1)
System.out.print(new String(b));


中英文混合的文本读取

byte[] b =new byte[yourtxtlength];

yourtxtlength就是你文本字节的长度
参考技术A 可以直接这么写,加入字符编码:
InputStreamReader isr = new InputStreamReader(new FileInputStream("a.txt"), "utf-8");
剩下的一样
参考技术B 汉字出现乱码,是因为你用字节流来读取汉字了,你应该用字符流,FileReader来读取文件,你试一下吧

java数据库中文乱码怎么解决

  可能原因一:数据库不支持中文,或者是数据库编码格式和java代码编码格式不一致,这种情况需要修改数据库编码格式:
  ALTER SYSTEM DISABLE RESTRICTED SESSION;改完编码后执行
  sql> conn / as sysdba;
  sql> shutdown immediate;
  database closed.
  database dismounted.
  oracle instance shut down.
  sql> startup mount;
  oracle instance started.
  total system global area 135337420 bytes
  fixed size 452044 bytes
  variable size 109051904 bytes
  database buffers 25165824 bytes
  redo buffers 667648 bytes
  database mounted.
  sql> alter system enable restricted session;
  system altered.
  sql> alter system set job_queue_processes=0;
  system altered.
  sql> alter system set aq_tm_processes=0;
  system altered.
  sql> alter database open;
  database altered.
  sql> alter database character set internal_use UTF-8;
  sql> shutdown immediate;
  sql> startup;
  可能原因二:java代码生成插入语句的时候,已经发生乱码现象,这种只能是修改项目编码格式或者是在数据获取的时候直接转译代码编码格式来实现了。
参考技术A 1:检查数据库编码
2:看下程序sql插入时候的数据是不是已经乱码,如果是就在程序里处理一下,如果没有乱码,就检查一下java项目编码与数据库的编码是否一致

以上是关于java 读取文件流乱码输出乱码的主要内容,如果未能解决你的问题,请参考以下文章

java读文件乱码问题

java读取文件乱码

08 转换流

java 打印机打印文件 中文乱码

为啥C语言输出文件内容乱码

Qt读取文本文件乱码怎么办