คำอธิบายปัญหา:
ใช้ org.apache.cmmons.net.ftp.ftpclient เพื่อสร้างไดเรกทอรีภาษาจีนและอัปโหลดชื่อไฟล์ภาษาจีนไดเรกทอรีภาษาจีนและชื่อไฟล์จะแสดงเป็น "??"
เหตุผล:
ในโปรโตคอล FTP ชื่อไฟล์จะถูกระบุเป็น ISO-8859-1 ดังนั้นชื่อไดเรกทอรีหรือชื่อไฟล์จะต้องถ่ายโอน
สารละลาย:
1. เปลี่ยนไดเรกทอรีภาษาจีนหรือชื่อไฟล์เป็นอักขระรหัส ISO-8859-1 รหัสอ้างอิง:
คัดลอกรหัสรหัสดังนี้:
ชื่อสตริง = "ชื่อไดเรกทอรีหรือชื่อไฟล์";
name = new String (name.getBytes ("GBK"), "ISO-8859-1");
2. ตั้งค่ารหัสคัดลอกตัวแปร Linux environment ดังต่อไปนี้:
ส่งออก lc_all = "zh_cn.gbk"
ส่งออก lang = "zh_cn.gbk"
ตัวอย่าง:
คัดลอกรหัสรหัสดังนี้:
Public Boolean uploadFile (ไฟล์ไฟล์, เส้นทางสตริง, ชื่อไฟล์สตริง) พ่น IOException {
ผลลัพธ์บูลีน = false;
ftpClient ftpClient = new ftpClient ();
พยายาม {
ftpclient.connect (confservice.getConfvalue (PortalConfcontants.ftp_client_host)) ;;);
ftpclient.login (confservice.getConfvalue (portalConfcontants.ftp_client_username), confservice, confservice
.getConfValue (PortalConfContants.ftp_client_Password));
ftpClient.setFileType (ftpClient.binary_file_type);
// สร้างไดเรกทอรี
if (path! = null &&! "". equals (path.trim ())) {{
String [] pathes = path.split ("/");
สำหรับ (String onePath: Pather) {
ifpath == null || ". equals (onepath.trim ())) {) {
ดำเนินการต่อ;
-
onePath = สตริงใหม่ (onePath.getBytes ("GBK"), "ISO-8859-1");
if (! ftpclient.changeworkingDirectory (onePath)) {
ftpclient.makedirectory (onepath);
ftpclient.changeworkingDirectory (onePath);
-
-
-
result = ftpClient.storeFile (สตริงใหม่ (filename.getBytes ("GBK"), "ISO-8859-1"), FileInputStream ใหม่ (ไฟล์));
} catch (Exception e) {{
E.PrintStackTrace ();
} ในที่สุด {
ftpclient.logout ();
-
ผลตอบแทน;
-