Problembeschreibung:
Wenn Sie org.apache.commons.net.ftp.FTPClient verwenden, um ein chinesisches Verzeichnis zu erstellen und einen chinesischen Dateinamen hochzuladen, werden die Chinesen im Verzeichnisnamen und Der Dateiname wird als „??“ angezeigt.
Grund:
Im FTP-Protokoll ist die Dateinamenkodierung ISO-8859-1, daher muss der Verzeichnisname oder Dateiname transkodiert werden.
Lösung:
1. Konvertieren Sie den chinesischen Verzeichnis- oder Dateinamen in ISO-8859-1-codierte Zeichen. Referenzcode:
Name =new String(name.getBytes("GBK"),"iso-8859-1");//Der konvertierte Verzeichnisname oder Dateiname.
2. Legen Sie die Linux-Umgebungsvariable fest
Beispiel:
public boolean upLoadFile(File file, String path, String fileName) throws IOException {
boolean result = false;
FTPClient ftpClient = new FTPClient();
Versuchen Sie es mit {
ftpClient .connect(confService.getConfValue (PortalConfContants.FTP_CLIENT_HOST)); (PortalConfContants.FTP_CLIENT_PASSWORD));
ftpClient.setFileType(FTPClient .BINARY_FILE_TYPE);
// Verzeichnis erstellen
String[] paths = path.split( "/");
for (String onepath : paths ). );
if (!ftpClient.changeWorkingDirectory(onepath) ) {
);
eWorkingDirectory(onepath);
}
}
result = ftpClient.storeFile(
new String(fileName.getBytes(" GBK"). logout();
}
Ergebnis zurückgeben;
}
Neu gepostet von:
Das obige ist der detaillierte Inhalt vonLösung für das Problem verstümmelter chinesischer Verzeichnis- und Dateinamen, die von FTPClient in Java hochgeladen werden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!