在url中 , 只能使用url合法的字符 . 如果使用了非法字符来访问某资源(如:+#等) , 就会导致资源访问异常或失败 . 同时原生url中也是不支持中文的 , 以百度为例 , 当你搜索了中文关键词时 , 可以在url地址栏中明显的看出来中文被"编码转换了" . 本章暂时先不讨论特殊代码及中文字符的原因 , 先讲一下如何解决url中的特殊字符问题;
package com;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.net.URLEncoder;
* JAVA中url特殊字符的处理
public class XTest {
public static void main(String[] args) throws UnsupportedEncodingException {
String url = "https://www.xtest.com/?key=";
String wd = "智能+学习";
String encoderUrl = URLEncoder.encode(wd, "UTF-8");
System.out.println(url + encoderUrl);
String decoderUrl = URLDecoder.decode(encoderUrl, "UTF-8");
System.out.println(url + decoderUrl);
在控制台可看到输出如下 :
https://www.xtest.com/?key=%E6%99%BA%E8%83%BD%2B%E5%AD%A6%E4%B9%A0
https://www.xtest.com/?key=智能+学习
应用场景 : url中包含中文及特殊字符 , 另提醒一个项目中被忽视的地方 , 本人在此就深得教训;
url中需要嵌套另一个url时 , 如需要向第三方发送get请求 , 然后需要提供一个回调地址 , 这是就是把url作为参数值放入url中 , 这个url必然是合法的url , 但仍然不能直接拼接到url中, 会导致浏览器无法解析 . 所以需要进行url编码之后再进行拼接.
关于URL及其特殊字符的详细信息 , 可以参考这个页面 :
URL编码详解
在url中 , 只能使用url合法的字符 . 如果使用了非法字符来访问某资源(如:+#等) , 就会导致资源访问异常或失败 . 同时原生url中也是不支持中文的 , 以百度为例 , 当你搜索了中文关键词时 , 可以在url地址栏中明显的看出来中文被"编码转换了" . 本章暂时先不讨论特殊代码及中文字符的原因 , 先讲一下如何解决url中的特殊字符问题;package com;import
本文主要介绍Java中,使用URLEncoder.encode和URLDecoder.decode对url地址链接中,中文字符及特殊字符用 UTF-8字符集进行编码和解码的方法,及相关的示例代码。
原文地址:Java 使用URLEncoder.encode和URLDecoder.decode编解码(utf-8)中文及特殊字符
url_ = quote(new_url, safe=string.printable);
以上这篇解决Python 爬虫URL中存在中文或特殊符号无法请求的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持软件开发网。
您可能感兴趣的文章:Python 爬虫之超链接 url中含有中文出错及解决办法解决python爬虫中有中文的url问题Py
public static String getURLEncoderString(String str) {
String result = "";
if (null == str) {
return "";
try {
result = java.net.URLEncoder.en...
URL中有些特殊字符不进行转义时解析失败,因此需要进行转义,分享一个转义部分的代码
String url = "http://*****/up/test/1R9000269(Shinco,divs)/bvs|dvdv";
String url = url.replace("(", "%28").replace(")","%29").replace("*","%2A").replace("|","%7C");
附常用的字符的转义:
Java调用
URLDecoder.decode(data, “UTF-8”); 抛出的异常,其主要原因是% 在
URL中是
特殊字符,需要特殊转义一下:
url =
url.replaceAll("%(?![0-9a-fA-F]{2})", “%25”);
String
urlStr =
URLDecoder.decode(
url, “UTF-8”);
其他
特殊字符以及对应的替代:
URL中如果包含的特殊字符,比如#、+、&等,如果不对其进行转义,则通过Http不能进行下载(Client通过Get方法访问HttpServer)。
比如URL为 :http://192.168.49.20:8192/mnt/sdcard/MIUI/music/mp3/only love +can_the verse.mp3
如果不对 + 进行转义,在HttpServer中收到
System.out.println("Hello\tWorld"); // 输出:Hello World
System.out.println("Hello\nWorld"); // 输出:Hello
World
System.out.println("I\'m a student."); // 输出:I'm a student.
需要注意的是,
Java中还有一些特殊符号需要
进行处理,例如 $ 和 @ 等字符,在某些特定场景下需要使用转义字符
进行处理。