1. 程式人生 > >FTP檔案亂碼和傳輸模式解釋

FTP檔案亂碼和傳輸模式解釋

  1. 問題現象
    1. 使用apache的FTP框架下載或者上傳中文檔案出現亂碼
  2. 原因分析
    1. FTP協議裡面,規定檔名編碼為iso-8859-1,所以目錄名或檔名需要轉碼。所以如果是中文需要使用者手動設定。
  3. 處理步驟
    1. 方法一:將中文的目錄或檔名轉為iso-8859-1編碼的字元。參考程式碼:

String name="目錄名或檔名";

name=newString(name.getBytes("GBK"),"iso-8859-1");// 轉換後的目錄名或檔名

  1. 方法二:在new FTPClient後,使用程式碼ftpClient.setControlEncoding("utf-8");

該程式碼的作用是將檔案編碼由

ISO-889-1轉為utf-8,也可以轉為其他的,例如GBK

  1. 效果
  2. 附錄
    1. FTP的傳輸有兩種方式:ASCII傳輸模式和二進位制資料傳輸模式
      1. 使用的時候,建議使用ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
        1. 來定義傳輸模式,不容易出現內容被修改的情況。因為如果使用ASCII來傳輸的時候,出現過“回車”變成“換行”的情況,使內容發生改變。具體原因可以看看這兩種模式的詳解。