问题描述
以下是代码片断:importsun.net.ftp.FtpClient;FtpClientftpClient=newFtpClient(this.ftpServer);ftpClient.openServer(this.ftpServer,this.ftpPort);ftpClient.login(this.ftpUser,this.ftpPassword);ftpClient.binary();ftpClient.cd("\");this.ftpClient.put(p_fileName);问题:当p_fileName的值为英文字符时正常,如果出现中文字符,出报如下错误:sun.net.ftp.FtpProtocolException:501Syntaxerrorinparametersorarguments.atsun.net.ftp.FtpClient.openDataConnection(FtpClient.java:385)atsun.net.ftp.FtpClient.put(FtpClient.java:594)请问各位达官贵人有遇到这种问题吗?给一个解决方案吧?谢谢。目前我只好先:p_fileName=java.net.URLEncoder.encode(p_fileName);不过这样有一个问题就是,中文全部成了类似于这样的形式:%C8%CB%D0%D4%B5%C4%C8%F5%B5%E3.doc
解决方案
解决方案二:
顶一下
解决方案三:
说明ftpClient.put(p_fileName);这个方法不支持中文呗,把中文转换为Unicode(统一码、万国码、单一码),毕竟语言是外国人写的,有的时候用中文会出错,所以用Unicode转换下
解决方案四:
谢谢楼上兄弟,不过我试过几种编码方法,都不行。所以我觉得可能还有别的方式可以实现。