java读写文件,在服务器显示乱码问题

用java读写xml文件的时候,在本机测试都是正常的,但是放在服务器上测试第一次一般都是正常的,数据设什么的打印出来也是ok的,但是第二次运行就基本都是乱码了,我的代码如... 用java读写xml文件的时候,在本机测试都是正常的,但是放在服务器上测试第一次一般都是正常的,数据设什么的打印出来也是ok的,但是第二次运行就基本都是乱码了,我的代码如下,请大侠救我。。。
package com.dingdong.test;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Date;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Test {
public static void main(String[] args) throws Exception {
File file = new File("F:\\stream.xml");
StringBuffer filecontent = new StringBuffer();
FileInputStream fis = new FileInputStream(file);
InputStreamReader isr = new InputStreamReader(fis, "UTF-8");
BufferedReader reader = new BufferedReader(isr);
String[] objectlists = null;
String tempstring="";
String line = "";// 用来保存每次读取一行的内容
while ((line = reader.readLine()) != null) {
System.out.println(line.trim());
filecontent.append(line.trim()+"\n");
}
if(filecontent.toString().contains("</Objects>")){
objectlists = filecontent.toString().split("</Objects>");
}else if(filecontent.toString().contains("</Measurements>")){
objectlists = filecontent.toString().split("</Measurements>");
}else {
System.out.println("没找到正确的标签!!");
}

File filepath = new File("F:\\a.xml");
String targetfilename = "";
System.out.println(objectlists.length);
FileOutputStream fos = null;
OutputStreamWriter osw =null;
BufferedWriter bw = null;
if(objectlists.length>0){
for(String str:objectlists){
Pattern linePattern = Pattern.compile("<ObjectType>(\\S+)</ObjectType>");
Matcher matcher = linePattern.matcher(str);
if(matcher.find()){
System.out.println("找到了");
System.out.println(str);
targetfilename = matcher.group(1);
File targetfile = new File("/"+filepath + targetfilename + ".xml");
if(targetfile.createNewFile()== true){
fos = new FileOutputStream(targetfile);
osw = new OutputStreamWriter(fos,"UTF-8");
bw = new BufferedWriter(osw);
bw.write(str);
bw.flush();
bw.close();
}
}

}
}

}
}
我把项目改成UTF-8,我把服务器的显示改成UTF-8,关键是我的xml文件里面根本就没有中文,我都不知道是怎么乱码的。。。XML文件如下:<?xml version="1.0" encoding="UTF-8"?><PmFile xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="PmFileFormat.xsd"> <FileHeader> <InfoModelReferenced>CMCC-HSS-PM-V1.2.0</InfoModelReferenced> <EndTime>2014-01-19T11:00:00+08:00</EndTime> </FileHeader> <Measurements> <ObjectType>EthernetPort</ObjectType> </Measurements></PmFile>

这个不是web项目,是一个java项目。。。。。。。。
展开
 我来答
198901245631
推荐于2016-11-30 · TA获得超过3.5万个赞
知道大有可为答主
回答量:9037
采纳率:92%
帮助的人:1723万
展开全部
写入文件的时候设置下编码格式即可,之后读取就不会是乱码的。
可以通过“FileOutputStream”创建文件实例,之后过“OutputStreamWriter”流的形式进行存储,举例:
OutputStreamWriter pw = null;//定义一个流
pw = new OutputStreamWriter(new FileOutputStream(“D:/test.txt”),"UTF-8"哗誉手);//确认流的输出文件和编码格式,此过程创建了“test.txt”实例
pw.write("我是要写入到记事本文件的内容");//将要写虚锋入文件的内容,可以多次write
pw.close();//关闭流
备注:文件流用完之后必须及时通过close方法关闭,否则会一直处于打开状态,直至程序停止,增加系统负乱嫌担。
曹晓山11
2015-06-18 · 知道合伙人互联网行家
曹晓山11
知道合伙人互联网行家
采纳数:3033 获赞数:52066
毕业南阳理工学院计算机科学与技术专业,本科学位。互联网行业从业3年工作经验,读过编程类相关书籍多本。

向TA提问 私信TA
展开全部
解决JAVA读写文件在服务器显示乱码的办法:
  1. 操作的文件的文件名里面禁止用中文,日本等文字。只能用英文,数值等。这种方法在很多项目中带纯都是采用的这种方法。

  2. 从本地上传文件到服务器纯码的时候,就对文件名进行码制转换。比如本地是SHIFT—JIS,服务器是UTF-8。一般大多数服务器都是UTF-8。上传工具可以对文件名进行UTF-8转换。比如使用WINSCP软件,转换后的文件名由于是UTF-8,所以能正常显示。

JAVA读写服务器文件出现乱码的原因:
JAVA读取文件是会自动用当前JAVA环境的encode对文件名进行读取。如果JAVA环境的encode和服务器上的文件名的encode一致的话,就能够显示文件名做行哪。但是如果JAVA环境的encode和服务器上的文件名的encode不一致的话,就会出现乱码。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
z_play_du
推荐于2018-03-10
知道答主
回答量:31
采纳率:0%
帮助的人:7万
展开全部
一个是服务器的原因,比如你现在使用的是tomcat,tomcat的conf目录中的server.xml文件中的Connector 中就应该指定URIEncoding="UTF-8" 如下:
<Connector port="野迹8080" protocol="HTTP/1.1" connectionTimeout="简脊穗20000"
redirectPort="8443" acceptCount="100" maxSpareThreads="75"
debug="0"
enableLookups="false"拦卜
disableUploadTimeout="true" useBodyEncodingForURI="true" URIEncoding="UTF-8"/>
更多追问追答
追问
不是tomcat,是sun的服务器,而且我已经改了服务器为UTF-8了。。。不是jsp显示什么中文乱码的问题。。
追答
那就把你的编译器的encoding更改为utf-8啊
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
力波鸿0i
2014-01-20 · TA获得超过1259个赞
知道小有建树答主
回答量:461
采纳率:100%
帮助的人:348万
展开全部
你的XML文件存储的时候是使用UTF-8么?即物团使你有encoding="UTF-8",如罩谈橘侍烂果直接存还是ASCII吧,可是你读的时候InputStreamReader isr = new InputStreamReader(fis, "UTF-8");使用了UTF-8读,所以乱码。
追问
如果是这个问题,那怎么解决呢? 用ascii来读???
追答
是的,直接去掉InputStreamReader的"UTF-8"
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
依吻船柠
2014-01-20
知道答主
回答量:6
采纳率:0%
帮助的人:6.4万
展开全部
检查服务器配置 如果是web项目 本地测试是不是用servlet测的 否则检查servlet配置
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式