ftp下载数据乱码

dahuzilaodie 2013-11-22 09:35:57
ftp下载数据出现乱码 一个txt文件

        URL  u3=new  URL("ftp://user:password@111.111.111.11:11//vehicle.txt");  
urlconn3=u3.openConnection();
in3 = urlconn3.getInputStream();
BufferedReader br3=new BufferedReader(new InputStreamReader(in3));
StringBuffer t3 = new StringBuffer();
while((line=br3.readLine())!=null){
rec=line.split("\t");
String tel=rec[0];
String hpzl=rec[1];
String hphm=rec[2];
String jf=rec[3];
String fsxx1=rec[4];
System.out.println(fsxx1);
String fsxx = new String(fsxx1.getBytes("GBK"), "ISO-8859-1");
// String address=rec[3];
System.out.println(tel+hpzl+hphm+jf+fsxx1);
}
...全文
462 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangjn1982 2013-11-22
  • 打赏
  • 举报
回复
你看看你本机的字符集是否与文件的字符集相匹配
dahuzilaodie 2013-11-22
  • 打赏
  • 举报
回复
ISO-8859-1 GBK UTF-8 都试过了没有反应,乱码的样子也没有变化。 但是我直接通过浏览器地址栏 能在页面上面看见正常的数据。
teemai 2013-11-22
  • 打赏
  • 举报
回复
String fsxx =  new String(fsxx1.getBytes("ISO-8859-1"), "GBK");
try it
zhaoyang66 2013-11-22
  • 打赏
  • 举报
回复
用apache ftpclient吧,部分样例代码 /** * 获取FTP服务器的客户端 连接对象 FTPClient Author:liuzhaoyang Date:2013-06-24 * * @param ftpURL * ftpURL * @param userName * ftp server 用户名用户名 * @param passWord * ftp server 登录密码 * @return ftpClient对象 */ private static FTPClient ftpClientConnection(String ftpURL, String userName, String passWord, String charSet) throws IOException { if (Objects.equal(userName, null)) { userName = "anonymous"; } if (Objects.equal(passWord, null)) { passWord = "anonymous"; } List<String> listCharSet = ImmutableList.of("utf8", "utf-8", "gbk", "gb2312"); if (!listCharSet.contains(StringUtils.lowerCase(charSet))) { // 如果charSet不是utf8,gbk,gb2312;就抛出异常 throw new RuntimeException("该FTP方法目前支持的文件编码有:utf8,gbk,gb2312"); } String loginInfo = Objects.toStringHelper("").add("ftpURL", ftpURL).add("userName", userName) .add("passWord", passWord).toString(); logger.info(loginInfo); FTPClient ftpClient = null; // try { if (StringUtils.startsWithIgnoreCase(ftpURL, "ftp://")) { // 判断是否以ftp://开头;格式:ftp://172.22.158.54/20130326/000000_0;或ftp://172.22.158.54:23/20130326/000000_0 ftpURL = StringUtils.substring(ftpURL, 6); // 如果以ftp://开头,就进行截取;格式:172.22.158.54/20130326/000000_0;或172.22.158.54:23/20130326/000000_0 } logger.debug("ftpURL is: " + ftpURL); String hostNameAndPort = StringUtils.substringBefore(ftpURL, "/"); // 分割字符串,格式:172.22.158.54或172.22.158.54:23 logger.debug("hostName is: " + hostNameAndPort); String hostName = StringUtils.substringBefore(hostNameAndPort, ":"); // 分割字符串,格式:172.22.158.54 String strFtpPort = StringUtils.substringAfter(hostNameAndPort, ":"); // 分割字符串,格式:23 if (Objects.equal(strFtpPort, "")) { strFtpPort = "21"; // FTP 缺省端口 } int ftpPort = Convert.toIntValue(strFtpPort); logger.debug(Objects.toStringHelper("ftp info").add("hostName", hostName).add("ftpPort", ftpPort)); ftpClient = new FTPClient(); FTPClientConfig ftpClientConfig = new FTPClientConfig(FTPClientConfig.SYST_UNIX); ftpClientConfig.setServerLanguageCode("zh"); ftpClient.configure(ftpClientConfig); ftpClient.setConnectTimeout(SpringUtils.getDataSourceConnectTimeout());// 30s连接超时 ftpClient.setDataTimeout(SpringUtils.getDataSourceReadTimeout()); ftpClient.connect(hostName, ftpPort); boolean isLogin = false; isLogin = ftpClient.login(userName, passWord); ftpClient.setBufferSize(5 * 1024); // buffer size 设置为5M ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE); // 设置文件类型为二进制,否则可能导致乱码无法打开 ftpClient.setControlEncoding(charSet); if (Objects.equal(isLogin, true)) { logger.info("FTP 登录成功,登录成功信息(ftp login success):" + loginInfo); } else { logger.warn("FTP 登录失败,登录失败信息(ftp login failure): " + loginInfo); throw new RuntimeException("FTP 登录失败,登录失败信息(ftp login failure): " + loginInfo); } // 检测连接是否成功 int replay = ftpClient.getReplyCode(); if (!FTPReply.isPositiveCompletion(replay)) { ftpClient.disconnect(); logger.error("FTP Server refused connection! FTP Server 拒绝连接"); throw new RuntimeException("FTP Server refused connection! FTP Server 拒绝连接"); } return ftpClient; // } catch (IOException e) { // logger.error(e.getMessage(), e); // throw Throwables.propagate(e); // } }
dahuzilaodie 2013-11-22
  • 打赏
  • 举报
回复
我不知道ftp那边的字符集, 还有怎么看本机的字符集。 刚上手,很多不是很清楚。 我的工具是Myeclipse

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧