FTP文件亂碼和傳輸模式解釋


轉:

FTP文件亂碼和傳輸模式解釋

版權聲明:大俠,在轉載時請注明出處,小弟不勝感激 https://blog.csdn.net/qq_33301113/article/details/55657151
  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");// 轉換后的目錄名或文件名

這是一般情況,如果  領導要求:所有 FTP上傳的文件(文件名)都要用 UTF-8 編碼,那么就需要將上面代碼中的 GBK 改成 UTF-8 ,也就是改成如下

改為

//上傳文件            

 if (!ftp.storeFile(new String(filename.getBytes("utf-8"),"iso-8859-1"), input)) { return result; }

 

 

  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來傳輸的時候,出現過“回車”變成“換行”的情況,使內容發生改變。具體原因可以看看這兩種模式的詳解。

http://blog.sina.com.cn/s/blog_49c23d17010007zw.html

http://www.tuicool.com/articles/VzuQvyB


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM