windows 到 linux出现乱码处理

此次操作是从linux系统中下载数据,在windows系统中编程,一切顺利完成,但是把系统打成JAR包放到linux下运行,却出现了诸多问题。编码问题就是其中一个。后来经过短小的代码进行编码转换即可。

 

package com.csair.rms.data.serivice.quartz.US;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.Writer;

import org.apache.log4j.Logger;
import com.csair.rms.data.domain.USEntity;
import com.csair.rms.data.util.DateUtil;
import com.csair.rms.data.util.StringUtil;

public class USFileProcess {
 /**
  * US数据处理分割数据
  *
  * @author zenglin
  * @param args
  */

 private String sourceFile;
 private String destFile;
 private Logger log = Logger.getLogger(USFileProcess.class);

 /**
  * 带参数的构造函数
  *
  * @param sourceFile
  *            数据文件的名称
  */
 public USFileProcess(String sourceFile, String destFile) {
  this.sourceFile = sourceFile;
  this.destFile = destFile;
 }

 public void UsPortTxtToDat(int maxid) {
  
  FileInputStream fr = null;
  BufferedReader br = null;
  Writer ow = null;
  BufferedWriter bw = null;
  try {
   File file = new File(this.sourceFile);
   fr = new FileInputStream(file);
   br = new BufferedReader(new InputStreamReader(fr, "GBK"));
   ow = new OutputStreamWriter(new FileOutputStream(this.destFile), "utf-8");
   bw = new BufferedWriter(ow);
   // 插入数据库的最大ID
   int maxId = maxid;
   // 处理第一行的文件头
   String lineStr = null;
   // 行计数器
   int counter = 0;
   USEntity av = null;
   // 统一数据插入时间
   String updateDate = new DateUtil().getDateTime();

   while ((lineStr = br.readLine()) != null) {
    counter++;
    maxId++;
    // 新建一个AV时的操作
    av = new USEntity();
    // 按空格分格
    String[] str = lineStr.split("\\s+");
    av.setUSER(new String( str[1].getBytes( "UTF-8" ), "UTF-8" ));
    av.setCARRIER(str[3]);
    av.setFLTNO(str[4]);
    av.setWORKTEAM(str[0]);
    av.setSEG(str[2]);
    av.setUPDATETIME(updateDate);
    String lineTemp = maxId + "|"
      + StringUtil.getField(USEntity.class.getName(), av);
    bw.write(lineTemp);
    bw.newLine();
   }
  } catch (IOException e) {
   log.error("US数据处理US分割数据发生异常!", e);
  } finally {
   try {
    br.close();
    bw.close();
    fr.close();
    ow.close();
   } catch (IOException e) {
    e.printStackTrace();
   }

  }

 }
}

你可能感兴趣的:(windows 到 linux出现乱码处理)