一个关于读取中文的问题

ralihm 2002-10-08 10:52:27
在利用fileinputStream或者RandomAccessFile类来读取中文文本并将文本输出到窗口的时候一直都是乱码,不知道是什么原因?应该怎样才能解决?

例如:

FileInputStream fin= new FileInputStream("java.txt");
String str;
//读取前10行
for(int i=0;i<10;i++)

str=fin.readLine();
System.out.println(str);
}
但实际上不能显示中文子。

不知道怎么办呢。

...全文
27 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ralihm 2003-02-12
  • 打赏
  • 举报
回复
hh
sunlinux 2002-10-09
  • 打赏
  • 举报
回复
to ralihm(raly) :

因为fint 是一个char类型啊,那用System.out.println()打出当然是乱码了, 但是FileOutputStream 的 write()是方法内部处理过了!

你可以试着用 LineNumberReader 的readLine()方法读到一个String变量里,再用System.out.println(strVariable); //strVariable是一个String变量或者是StringBuffer变量
部分代码如下:
File inFile = new File("java.txt");
try{
LineNumberReader inputFile = new LineNumberReader(new FileReader(inFile));
while((strVariable=inputFile.readLine())!=null)
{
System.out.println(strVariable); //屏幕上打出
}

}catch(....){.......}
haichuang 2002-10-08
  • 打赏
  • 举报
回复
请不要使用FileInputStream类,改用FileReader类就可以解决中文问题.
sunlinux 2002-10-08
  • 打赏
  • 举报
回复
您用DataInputStream包装一下,然后用read()方法读啊! readLine()方法当然不能读中文了
wjmmml 2002-10-08
  • 打赏
  • 举报
回复
解决办法:
第一:
在jsp页面加入:
<%@ page contentType="text/html; charset=gb2312" %>
或者在servlet里面
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html; charset=gb2312");
上面的如果在不行就用如下的方法在数据入库前进行调用:
public static String UnicodeToChinese(String s){
try{
if(s==null||s.equals("")) return "";
String newstring=null;
newstring=new String(s.getBytes("ISO8859_1"),"gb2312");
return newstring;
}
catch(UnsupportedEncodingException e)
{
return s;
}
}

public static String ChineseToUnicode(String s){
try{
if(s==null||s.equals("")) return "";
String newstring=null;
newstring=new String(s.getBytes("gb2312"),"ISO8859_1");
return newstring;
}
catch(UnsupportedEncodingException e)
{
return s;
}
}
ralihm 2002-10-08
  • 打赏
  • 举报
回复
to sunlinux(阳光)


例如:

FileInputStream fin= new FileInputStream("java.txt");
FileOutputStream fout= new FileOutputStream("new.txt");

char fint;
//读取前100字节,其中包含中文
for(int i=0;i<100;i++)

fint=fin.readChar();
fout.write(fint);//中文能够写到文件中
System.out.println(fint);//显示器显示乱码
}

请问why?
sunlinux 2002-10-08
  • 打赏
  • 举报
回复
但显示在屏幕上就是乱码
---------您是怎么处理的?
ralihm 2002-10-08
  • 打赏
  • 举报
回复
但如果我read()读实际上也是一样的阿

如果我用read()读数据源数据再将数据写到一个新的文件中,数据员的中文能够显示在新文件中,但显示在屏幕上就是乱码,不知道是什么原因呢?

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧