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;




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiejava1018

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值