- 浏览: 1654213 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (405)
- C/C++ (16)
- Linux (60)
- Algorithm (41)
- ACM (8)
- Ruby (39)
- Ruby on Rails (6)
- FP (2)
- Java SE (39)
- Java EE (6)
- Spring (11)
- Hibernate (1)
- Struts (1)
- Ajax (5)
- php (2)
- Data/Web Mining (20)
- Search Engine (19)
- NLP (2)
- Machine Learning (23)
- R (0)
- Database (10)
- Data Structure (6)
- Design Pattern (16)
- Hadoop (2)
- Browser (0)
- Firefox plugin/XPCOM (8)
- Eclise development (5)
- Architecture (1)
- Server (1)
- Cache (6)
- Code Generation (3)
- Open Source Tool (5)
- Develope Tools (5)
- 读书笔记 (7)
- 备忘 (4)
- 情感 (4)
- Others (20)
- python (0)
最新评论
-
532870393:
请问下,这本书是基于Hadoop1还是Hadoop2?
Hadoop in Action简单笔记(一) -
dongbiying:
不懂呀。。
十大常用数据结构 -
bing_it:
...
使用Spring MVC HandlerExceptionResolver处理异常 -
一别梦心:
按照上面的执行,文件确实是更新了,但是还是找不到kernel, ...
virtualbox 4.08安装虚机Ubuntu11.04增强功能失败解决方法 -
dsjt:
楼主spring 什么版本,我的3.1 ,xml中配置 < ...
使用Spring MVC HandlerExceptionResolver处理异常
最近使用HttpClient,和Java的java.net.URL,url有中文都会失败。
听徐师兄说HttpClient有URI这个类可以使用:
URI uri = new URI(url,false,"UTF-8"); String url = uri.toString();
例如,发送一个get请求获得一个带有中文链接的图片:
import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.FileOutputStream; import java.io.IOException; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.HttpException; import org.apache.commons.httpclient.URI; import org.apache.commons.httpclient.methods.GetMethod; /** * @author fuliang */ public class Test { public static void main(String[] args) throws HttpException, IOException { String url = "http://www.byecity.com/photoocean/photo/全球图片/亚洲/柬埔寨/s/7723132569.jpg"; GetMethod get = null; BufferedInputStream bis = null; BufferedOutputStream bos = null; try { URI uri = new URI(url,false,"UTF-8"); HttpClient hc = new HttpClient(); get = new GetMethod(uri.toString()); int status = hc.executeMethod(get); if (status == 200) { bis = new BufferedInputStream(get .getResponseBodyAsStream()); bos = new BufferedOutputStream( new FileOutputStream("/home/fuliang/photo.jpg")); byte[] buffer = new byte[1024]; int len = 0; while ((len = bis.read(buffer)) != -1) { bos.write(buffer, 0, len); } } } finally { if(get != null){ get.releaseConnection(); } if(bis != null){ bis.close(); } if(bos != null){ bos.close(); } } } }
如果使用java.net.URL而不想引入httpclient的包,我写了一个方法可以基本解决中文url的问题,对非ascii码进行encoding(健壮性肯定没有httpclient那个好,也可以直接把httpclient中的那个源码摘出来用):
import java.io.UnsupportedEncodingException; import java.net.URLEncoder; public class URLUtil { public static String encodeURL(String url,String encode) throws UnsupportedEncodingException { StringBuilder sb = new StringBuilder(); StringBuilder noAsciiPart = new StringBuilder(); for (int i = 0; i < url.length(); i++) { char c = url.charAt(i); if (c > 255) { noAsciiPart.append(c); } else { if (noAsciiPart.length() != 0) { sb.append(URLEncoder.encode(noAsciiPart.toString(),encode)); noAsciiPart.delete(0, noAsciiPart.length()); } sb.append(c); } } return sb.toString(); } }
举一个同样使用java.net.URL下载的例子:
import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; import org.apache.log4j.Logger; public class Downloader { private static Logger logger = Logger.getLogger(Downloader.class); public static boolean download(String urlString, String savePath) { BufferedInputStream bis = null; BufferedOutputStream bos = null; try { urlString = URLUtil.encodeURL(urlString,"UTF-8"); bis = new BufferedInputStream( getDownloadInputStream(urlString)); bos = new BufferedOutputStream(new FileOutputStream(savePath)); byte[] buffer = new byte[2048]; int len; while ((len = bis.read(buffer,0,buffer.length)) != -1) { bos.write(buffer, 0, len); } } catch (MalformedURLException e) { logger.error("Error url: " + urlString, e); return false; } catch (IOException e) { logger.error("Get connection " + urlString + "failed", e); return false; } finally { try { if (bis != null) { bis.close(); } if (bos != null) { bos.close(); } } catch (IOException e) { logger.error("close failed", e); return false; } } return true; } private static InputStream getDownloadInputStream(String urlString) throws IOException { URL url = new URL(urlString); URLConnection connection = url.openConnection(); InputStream inputStream = connection.getInputStream(); return inputStream; } public static OutputStream getSavaOutputStream(String path) throws FileNotFoundException { OutputStream fileOutputStream = new FileOutputStream(path); return fileOutputStream; } public static void main(String[] args) { download("http://www.byecity.com/photoocean/photo/全球图片/欧洲/希腊/s/76291161.jpg","/home/fuliang/test.jpg"); } }
评论
4 楼
srhlwdamon
2015-03-03
太感谢了!!!!
非常有用! 解决了中文的乱码问题!!
非常有用! 解决了中文的乱码问题!!
3 楼
di1984HIT
2014-11-20
不错,通过URL ENcode一下呗
2 楼
中国娃
2012-07-11
多谢了,
1 楼
wqjqqtbb
2011-04-20
多谢
发表评论
-
Builder模式遇到继承
2013-10-13 13:48 0interface Self<T extends ... -
Builder模式遇到集成
2013-10-13 13:47 0package com.qunar.qss.business. ... -
JVM调优Step by Step
2012-02-02 17:38 0现代的JVM能够适应于各种应用和领域,每个应用和领域的使用 ... -
commons-lang StringUtils#split的坑
2011-12-31 10:11 3154今天用StringUtils#split,陷入了前两个坑。需求 ... -
使用scala.sys.process包和系统交互
2011-07-19 00:00 6490在Java中我们可以使用Runtime.getRuntime( ... -
HttpClient Json请求工具
2011-05-05 18:32 17849发送Json请求,结果返回Json. public sta ... -
利用Java反射实现通用的Excel报表
2011-04-12 16:00 2019最近有很多客户报表需要提供客户下载,需要生成一个Excel的格 ... -
深入异常处理
2011-03-31 20:46 1800异常处理是写一个健壮 ... -
Java序列化注意一些点
2011-03-12 21:04 18461.序列化ID的问题: 标示了版本号,版本号一致才能反序列化成 ... -
Java动态代理
2010-09-24 00:34 4460Java提供了动态代理,可以完成AOP和装饰模式的功能,主要的 ... -
Java Timestamp是和ExtJS的timestamp不兼容
2010-08-09 20:33 3353Timestamp纳秒级别的,ExtJS的timestamp使 ... -
XML DocumentBuilder#parse(String str)
2010-07-06 15:55 3888DocumentBuilderFactory dbf = ... -
[备忘]String#split/substring的子串会共享原来大的String
2010-03-29 17:18 1492如果每次需要大字符串中的很小的一个字串,可能会引起内存中大量的 ... -
runtime.exec()执行进程block死锁问题
2010-01-18 21:39 5287最近在java代码中使用runtime.exec执行rsync ... -
A TaskExecutor Impl
2009-12-07 11:33 1626import java.util.ArrayList; im ... -
使用XStream把Java对象XML/JSON格式的序列化和反序列化
2009-05-05 11:37 6235试了一下Thoughtworks的XStream,以测试驱动和 ... -
从《编程的未来》这篇文章想到C++和Java语言的爽与不爽
2009-05-01 23:44 3970从编程的未来这篇文 ... -
《Effetive Java》读书笔记二
2009-02-23 14:23 1602第二章 所有对象共有的 ... -
《Effetive Java》读书笔记一
2009-02-19 11:36 2181《Effetive Java》和 《Effective C++ ... -
如何彻底杜绝别人使用你的类
2008-05-22 19:30 2356今天在eclipse源码中发 ...
相关推荐
URL中文乱码问题主要是由于URL编码和解码过程中的不一致导致的。下面将详细介绍如何解决这个问题,并探讨几种常用的方法。 首先,我们需要了解URL编码的基本原理。URL(统一资源定位符)不能包含某些特殊字符,如...
以上就是通过Swift的URL分类来解决URL中的空格、中文和其他特殊字符问题的基本方法。通过自定义的`encoded()`方法,我们可以确保URL的合法性,从而避免网络请求出错。在实际开发中,可以根据项目需求进行适当的调整...
通过了解URL编码的基础知识以及使用JavaScript内置函数的具体操作方法,可以帮助开发者更好地处理Web应用中的中文字符问题。此外,还讨论了处理更多特殊字符的情况,这对于国际化应用程序来说尤为重要。掌握这些技巧...
本文将深入探讨如何解决Apache对含中文URL网址的支持问题,特别是针对64位系统的情况。 首先,我们需要了解`mod_encoding`模块。这是一个Apache模块,主要用于处理HTTP请求的编码,以适应不同的字符集。在某些情况...
JAVA解决URL路径中含有中文的问题。无论是路径中还是文件名包含中文都可以处理。经测试验证通过。
在开发过程中遇到了Url的中文乱码问题,经过多次测试,解决了问题,并分享给大家,希望能够你帮助!
通过URLEncoder.encode加密地址栏url上得中文字符, 并可通过java.net.URLDecoder.decode(str, charset)解密中文
标题“URL中包含中文文件名的问题”涉及到的是在互联网中如何处理含有中文字符的文件名。在Web开发中,URL(统一资源定位符)是访问网络资源的主要方式,但URL编码规则并不支持直接包含所有非ASCII字符,尤其是中文...
搜集了网上的VBA函数,在excel中通过函数将汉字转为两种类型的URL编码,例如将 天空 二字转化为GB2312的“%CC%EC%BF%D5”或者是UTF-8的 “%E5%A4%A9%E7%A9%BA”。方便用于连接转换。VBA相关函数均来自网上,做了小小...
在JSP开发中,处理URL编码传递中文参数是常见的需求,尤其是在构建动态网页时。这个问题主要涉及到字符编码的转换,因为不同的编码标准可能导致乱码。以下是对这个主题的详细解释: 1. **URL编码**:URL(统一资源...
在ASP.NET开发过程中,我们时常会遇到URL参数传递中文字符时出现乱码的问题。这个问题主要源于字符编码不一致导致的,下面将详细讲解三种解决这个问题的方法。 ### 方法一:设置Web.config配置 在ASP.NET应用的`...
当我们需要在两个页面间通过URL传递参数时,经常会遇到中文乱码问题。这个问题主要是因为URL中的参数可能没有经过正确的编码和解码处理。为了解决这个问题,我们可以采取一些方法,特别是当使用jQuery来获取URL参数...
标题“URL中汉字乱码问题”涉及到的是在Web开发中常见的字符编码问题,尤其是在处理包含汉字的URL时。URL(Uniform Resource Locator)是用于定位网络资源的地址,它必须遵循特定的编码规则,以确保在不同系统间传输...
本文将深入探讨URL中文字符的转码过程以及如何处理URL中的不定参数。 首先,我们来理解URL编码的基本原理。URL编码遵循的是UTF-8标准,并使用百分号(%)进行编码。在URL中,除了字母、数字、减号(-)、下划线(_...
"URL地址传参中文乱码处理" URL地址传参中文乱码处理是指在Web应用程序中,将中文参数传递给...在处理URL地址传参中文乱码时,需要根据具体情况选择合适的解决方案,并注意编码问题、特殊字符处理和Tomcat配置等方面。
### URL中含有中文等非ASCII字符的相关知识点 #### 一、URL与非ASCII字符的基本概念 在互联网中,统一资源定位符(Uniform Resource Locator,简称URL)是用于标识互联网上资源位置的一种标准格式。URL通常包括...
在开发Android应用,尤其是涉及到网页浏览功能时,URL中文转换是一个关键的技术环节。这是因为URL(统一资源定位符)在互联网中被广泛使用,用于指向网络上的特定资源,而中文字符在URL中通常需要进行编码才能正确...
这种问题,初学者应该都会遇到,分享给大家做个参考! from urllib.parse import quote ... 您可能感兴趣的文章:Python 爬虫之超链接 url中含有中文出错及解决办法解决python爬虫中有中文的url问题Py