用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项目。。。。。。。。
操作的文件的文件名里面禁止用中文,日本等文字。只能用英文,数值等。这种方法在很多项目中都是采用的这种方法。
从本地上传文件到服务器的时候,就对文件名进行码制转换。比如本地是SHIFT—JIS,服务器是UTF-8。一般大多数服务器都是UTF-8。上传工具可以对文件名进行UTF-8转换。比如使用WINSCP软件,转换后的文件名由于是UTF-8,所以能正常显示。
不是tomcat,是sun的服务器,而且我已经改了服务器为UTF-8了。。。不是jsp显示什么中文乱码的问题。。
追答那就把你的编译器的encoding更改为utf-8啊
追问你看了代码么。。我能改的地方都改成utf-8了。。。。。。
追答一般处理乱码的问题是用byte[],你可以查一下。
本回答被提问者和网友采纳如果是这个问题,那怎么解决呢? 用ascii来读???
追答是的,直接去掉InputStreamReader的"UTF-8"