JAVA WebプロジェクトでOpenOffice+Swftools+Flexpaperでオンラインプレビューを実現し、txtファイルに文字化けしが発生!


幼稚園管理システムでは、オンラインプレビュー機能を実現します.ワード、ppt、excel、pdfをアップロードすると、文字化けしません.txtファイルがアップロードされると(UTF-8を除く符号化)、文字化けが発生します.当時は2つのスキームがありました.
シナリオ1:
txtファイルをアップロードするときは、その符号化がUTF-8であるか否かを判断し、そうでない場合は、プロンプトボックス:ユーザにtxtファイルをアップロードするにはUTF-8形式でなければならないことを提示する.txtの符号化を変更しないユーザがいることを考慮する.この案はやめるしかない.
シナリオ2:
txtファイルをアップロードする際、その符号化がUTF-8であるか否かを判断し、そうでなければ、そのtxtをコード変換してUTF-8に符号化する.コードは次のとおりです:ChangeFileCode.java
package com.util;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.Writer;

public class ChangeFileCode {
	//        
    private String fileIn;  
  
    //            
    private String fileInEn;  
  
    //        
    private String fileOut;  
  
    //            
    private String fileOutEn;  
  
    /**
     *         
     * @param filePath           
     * @return
     */
    public  String getFileEnCode(String filePath) {
		InputStream inputStream = null;
		String code = ""; 
		try {
			inputStream = new FileInputStream(filePath);  
	        byte[] head = new byte[3];  
	        inputStream.read(head);   
	        code = "gb2312";  
	        if (head[0] == -1 && head[1] == -2 )  
	            code = "UTF-16";  
	        if (head[0] == -2 && head[1] == -1 )  
	            code = "Unicode";  
	        if(head[0]==-17 && head[1]==-69 && head[2] ==-65)  
	            code = "UTF-8";  
	          
	        System.out.println(code);
		}catch(Exception e) {
			e.printStackTrace();
		} finally {
			try {
				inputStream.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		return code;
	}
  
    public void setFileIn(String fileInPath, String fileInEncoding) {  
        this.setFileIn(fileInPath);  
        this.setFileInEn(fileInEncoding);  
    }  
  
    public void setFileOut(String fileOutPath, String fileOutEncoding) {  
        this.setFileOut(fileOutPath);  
        this.setFileOutEn(fileOutEncoding);  
    }  
      
    public void start() {     
        String str = this.read(fileIn,fileInEn);     
        this.write(fileOut, fileOutEn, str);     
    }     
      
    /** 
     *     
     *  
     * @param fileName 
     * @param encoding 
     */  
    private String read(String fileName, String encoding) {  
        try {  
            BufferedReader in = new BufferedReader(new InputStreamReader(  
                    new FileInputStream(fileName), encoding));  
  
            String string = "";  
            String str = "";  
            while ((str = in.readLine()) != null) {  
                string += str + "
"; } in.close(); return string; } catch (Exception ex) { ex.printStackTrace(); } return ""; } /** * * * @param fileName * * @param encoding * * @param str */ private void write(String fileName, String encoding, String str) { try { Writer out = new BufferedWriter(new OutputStreamWriter( new FileOutputStream(fileName), encoding)); out.write(str); out.close(); } catch (Exception ex) { ex.printStackTrace(); } } public String getFileIn() { return fileIn; } public void setFileIn(String fileIn) { this.fileIn = fileIn; } public String getFileInEn() { return fileInEn; } public void setFileInEn(String fileInEn) { this.fileInEn = fileInEn; } public String getFileOut() { return fileOut; } public void setFileOut(String fileOut) { this.fileOut = fileOut; } public String getFileOutEn() { return fileOutEn; } public void setFileOutEn(String fileOutEn) { this.fileOutEn = fileOutEn; } public static void main(String[] args) { String InputFilePath = "C:\\Users\\lenovo\\Desktop\\1\\"; String FileName = "2.txt"; ChangeFileCode changeFileCode = new ChangeFileCode(); String path = InputFilePath+FileName; File file = new File(path); String fileCode = changeFileCode.getFileEnCode(path); if(fileCode!=null && !"".equals(fileCode)) { changeFileCode.setFileIn(file.getPath(), fileCode);// ANSI GBK , UTF-8 UTF-8 changeFileCode.setFileOut(file.getPath(), "UTF-8");//UTF-8 UTF-8, GBK, ANSI changeFileCode.start(); } } }