读写文本文件时,在windows系统正常,在linux下出现乱码!

时间:2023-01-26 21:34:00
我用jsp读取一文本文件,然后替换里面指定的字符,在生成一个新的文本文件,在windows系统正常,在redhat linux as 3.0 下出现乱码!

文本文件 test.html 的内容只有一句话: 这里是日本的地方。
我用jsp读取后,替换掉里面的日本后生成一个新的 test1.html 文件.

jsp代码如下:

<%@ page contentType="text/html; charset=GBK" %>
<%@ page language="java" %>
<%@ page import="java.io.*"%>
<%
String webroot=config.getServletContext().getRealPath("/");
String replace="中国";
String Str="",temp="";
try {
  FileReader fr =new FileReader(webroot+"test.html");
  BufferedReader bfr= new BufferedReader(fr);
  while((temp=bfr.readLine())!=null){
    Str+=temp+"\r\n";
  }
  fr.close();

  Str=Str.replaceAll("日本",replace);

  FileWriter fw =new FileWriter(webroot+"test1.html");
  BufferedWriter bfw= new BufferedWriter(fw);
  bfw.write(Str);
  bfw.flush();
  fw.close();
}catch (Exception e){
  out.print(e.toString());
}
out.print("<br>"+Str);
%>

11 个解决方案

#1


不支持

#2


乱码,那就只好转码了,在不同操作系统下编码是一个让人讨厌的问题,建议做一个配置,用来设定是否进行转码操作

http://www.javayou.com

#3


liusoft(凤梨罐头) :

我也试图转码了.

我在 Str=Str.replaceAll("日本",replace); 这句的后面分别加了下面的其中一句,但在linux下还是都是乱吗,而在windows下也都变成乱吗了,怎么办????


Str = new String(Str.getBytes("ISO8859_1"),"GBK");
Str = new String(Str.getBytes("ISO-8859-1"),"GBK");
Str = new String(Str.getBytes("GBK"),"ISO-8859-1");
Str = new String(Str.getBytes("GBK"),"ISO8859_1");

#4


补充一句,我用的jsp容器是 tomcat 5.0.25 和 tomcat 5.0.27

#5



本来linux就不支持中文的,唯一的办法就是转码

应该不会有什么问题的

实现不行你用字节流来读吧!

#6


liusoft(凤梨罐头) : 应该怎么样转码?

wubai250(wubai): 你能给段代码吧,我也遇到同样的问题.

#7


我以前是,试了n种转码方法也不行,只好放弃

建议楼主采取字节流读的方法试试

#8


是的,我最后采用字节流读的方法,成功了.

#9


支持!

#10


给大家贴出来看看那!

#11


字节流应该可以吧
我以前用过
但是Linux下没有试过

#1


不支持

#2


乱码,那就只好转码了,在不同操作系统下编码是一个让人讨厌的问题,建议做一个配置,用来设定是否进行转码操作

http://www.javayou.com

#3


liusoft(凤梨罐头) :

我也试图转码了.

我在 Str=Str.replaceAll("日本",replace); 这句的后面分别加了下面的其中一句,但在linux下还是都是乱吗,而在windows下也都变成乱吗了,怎么办????


Str = new String(Str.getBytes("ISO8859_1"),"GBK");
Str = new String(Str.getBytes("ISO-8859-1"),"GBK");
Str = new String(Str.getBytes("GBK"),"ISO-8859-1");
Str = new String(Str.getBytes("GBK"),"ISO8859_1");

#4


补充一句,我用的jsp容器是 tomcat 5.0.25 和 tomcat 5.0.27

#5



本来linux就不支持中文的,唯一的办法就是转码

应该不会有什么问题的

实现不行你用字节流来读吧!

#6


liusoft(凤梨罐头) : 应该怎么样转码?

wubai250(wubai): 你能给段代码吧,我也遇到同样的问题.

#7


我以前是,试了n种转码方法也不行,只好放弃

建议楼主采取字节流读的方法试试

#8


是的,我最后采用字节流读的方法,成功了.

#9


支持!

#10


给大家贴出来看看那!

#11


字节流应该可以吧
我以前用过
但是Linux下没有试过