url中有空格等特殊字符及中文字符处理

在做爬虫时,爬下来的书籍的URL地址各式各样,什么情况都有。
有的url地址既有中文,又有%20 空格等特殊字符。如 http://www.ishareread.com/book/2018/不成问题的问题%20-%20老舍.mobi
如果是在url中有中文需要转码,但转码后会将%号替换成%25,导致url不能访问了。
解决的办法,先判断url中是否有中文,如果有中文,则替换特殊字符,再进行转码。
代码如下:
判断字符串是否含有中文的方法:
public static boolean isContainChinese(String str) {
Pattern p = Pattern.compile("[\u4e00-\u9fa5]");
Matcher m = p.matcher(str);
if (m.find()) {
return true;
}
return false;
}

#先判断是否有中文,然后替换特殊字符,再转码,一般来说英文的url是不需要转码的。
if(StringUtil.isContainChinese(ebookDownloadUrl))
{
try
{
ebookDownloadUrl=ebookDownloadUrl.replaceAll("%20", " ");
ebookDownloadUrl=UriUtils.encodePath(ebookDownloadUrl, "UTF-8");
}
catch(Exception ex)
{
log.error(String.format("解释文件路径失败,URL地址为%s", ebookDownloadUrl), ex);
}
}
return "redirect:" +ebookDownloadUrl;




posted @ 2018-06-15 16:36  xiejava  阅读(422)  评论(0编辑  收藏  举报