Description du problème :
Lors de l'utilisation de org.apache.commons.net.ftp.FTPClient pour créer un répertoire chinois et télécharger un nom de fichier chinois, le chinois dans le nom du répertoire et le nom du fichier s'affiche sous la forme "??".
Raison :
Dans le protocole FTP, le codage du nom de fichier est iso-8859-1, le nom du répertoire ou le nom du fichier doit donc être transcodé.
Solution :
1. Convertissez le répertoire ou le nom de fichier chinois en caractères codés iso-8859-1. Code de référence :
name =new String(name.getBytes("GBK"),"iso-8859-1");//Le nom du répertoire ou du fichier converti.
2. Définissez la variable d'environnement Linux
Exemple :
public boolean upLoadFile(File file, String path, String fileName) throws IOException {
boolean result = false;
FTPClient ftpClient = new FTPClient();
essayez {
ftpClient .connect(confService.getConfValue (PortalConfContants.FTP_CLIENT_HOST)); (PortalConfContants.FTP_CLIENT_PASSWORD));
ftpClient.setFileType(FTPClient .BINARY_FILE_TYPE);
// créer un répertoire
String[] paths = path.split( "/");
for (String onepath : paths ) {
> }
onepath=new String(onepath.getBytes("GBK"),"iso-8859-1 ");
if (!ftpClient.changeWorkingDirectory(onepath) ) {
ftpClient.makeDirectory(onepath );
antecedents.storeFile(
new String( fileName.getBytes("GBK") . logout();
}
return result;
}
Republié depuis :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!