weibo4j.util.URLEncodeUtils Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of weibo-openapi-4java Show documentation
Show all versions of weibo-openapi-4java Show documentation
基于微博开放平台官网的weibo4j-oauth2-beta3.1.1包及新版接口做二次开发
The newest version!
/*
* Copyright © 2021 pengjianqiang
* All rights reserved.
* 项目名称:微博开放平台API-JAVA SDK
* 项目描述:基于微博开放平台官网的weibo4j-oauth2-beta3.1.1包及新版接口做二次开发
* 项目地址:https://github.com/qqxadyy/weibo-openapi-4java
* 许可证信息:见下文
*
* ======================================================================
*
* src/main/java/weibo4j下的文件是从weibo4j-oauth2-beta3.1.1.zip中复制出来的
* 本项目对这个目录下的部分源码做了重新改造
* 但是许可信息和"https://github.com/sunxiaowei2014/weibo4j-oauth2-beta3.1.1"或源码中已存在的保持一致
*/
package weibo4j.util;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.util.BitSet;
/**
* @author sinaWeibo
*
*/
public class URLEncodeUtils {
static BitSet dontNeedEncoding;
static {
/*
* The list of characters that are not encoded has been determined as
* follows:
*
* RFC 2396 states: ----- Data characters that are allowed in a URI but
* do not have a reserved purpose are called unreserved. These include
* upper and lower case letters, decimal digits, and a limited set of
* punctuation marks and symbols.
*
* unreserved = alphanum | mark
*
* mark = "-" | "_" | "." | "!" | "~" | "*" | "'" | "(" | ")"
*
* Unreserved characters can be escaped without changing the semantics
* of the URI, but this should not be done unless the URI is being used
* in a context that does not allow the unescaped character to appear.
* -----
*
* It appears that both Netscape and Internet Explorer escape all
* special characters from this list with the exception of "-", "_",
* ".", "*". While it is not clear why they are escaping the other
* characters, perhaps it is safest to assume that there might be
* contexts in which the others are unsafe if not escaped. Therefore, we
* will use the same list. It is also noteworthy that this is consistent
* with O'Reilly's "HTML: The Definitive Guide" (page 164).
*
* As a last note, Intenet Explorer does not encode the "@" character
* which is clearly not unreserved according to the RFC. We are being
* consistent with the RFC in this matter, as is Netscape.
*/
dontNeedEncoding = new BitSet(256);
int i;
for (i = 'a'; i <= 'z'; i++) {
dontNeedEncoding.set(i);
}
for (i = 'A'; i <= 'Z'; i++) {
dontNeedEncoding.set(i);
}
for (i = '0'; i <= '9'; i++) {
dontNeedEncoding.set(i);
}
dontNeedEncoding.set(' '); /*
* encoding a space to a + is done in the
* encode() method
*/
dontNeedEncoding.set('-');
dontNeedEncoding.set('_');
dontNeedEncoding.set('.');
dontNeedEncoding.set('*');
dontNeedEncoding.set('+');
dontNeedEncoding.set('%');
}
/**
* 判断段落文本是否被urlencode过
*
* @param str
* @return
*/
public static final boolean isURLEncoded(String str) {
if (str==null||"".equals(str)) {
return false;
}
char[] chars = str.toCharArray();
boolean containsPercent = false;
for (char c : chars) {
if (Character.isWhitespace(c)) {
return false;
}
if (!dontNeedEncoding.get(c)) {
return false;
}
if(c == '%'){
containsPercent = true;
}
}
if(!containsPercent){
return false;
}
return true;
}
public static final String encodeURL(String str) {
try {
return URLEncoder.encode(str, "utf-8");
} catch (UnsupportedEncodingException e) {
throw new RuntimeException(e);
}
}
public static final String decodeURL(String str) {
try {
return URLDecoder.decode(str, "utf-8");
} catch (UnsupportedEncodingException e) {
throw new RuntimeException(e);
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy