日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

判断字符串是不是application/x-www-form-urlencoded字符串(URL编码格式的字符串)

發布時間:2023/12/3 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 判断字符串是不是application/x-www-form-urlencoded字符串(URL编码格式的字符串) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
package priv.lwx.cs.util;import java.util.BitSet;/*** 判斷一個字符串是不是URL編碼字符串的工具類,即判斷字符串是不是application/x-www-form-urlencoded字符串** @author liaowenxiong* @date 2022/1/14 11:32*/public class URLEncodeUtils {private static BitSet dontNeedEncoding;static {dontNeedEncoding = new BitSet(256);int i;// 將小寫英文字母添加到BitSet對象中for (i = 'a'; i <= 'z'; i++) {dontNeedEncoding.set(i);}// 將大寫英文字母添加到BitSet對象中for (i = 'A'; i <= 'Z'; i++) {dontNeedEncoding.set(i);}// 將阿拉伯數字添加到BitSet對象中for (i = '0'; i <= '9'; i++) {dontNeedEncoding.set(i);}// 將其它URL編碼保留的字符添加到BitSet對象中dontNeedEncoding.set('+');dontNeedEncoding.set('-');dontNeedEncoding.set('_');dontNeedEncoding.set('.');dontNeedEncoding.set('*');}/*** 判斷字符串是否URLEncoder.encode過<br>* 經常遇到這樣的情況,拿到一個URL,但是搞不清楚到底要不要encode<Br>* 不做encode吧,擔心出錯,做encode吧,又怕重復了<Br>* 支持JAVA的URLEncoder.encode出來的string做判斷。* URL編碼格式:* 將' '轉成'+' <br>* 0-9a-zA-Z保留 <br>* '-','_','.','*'保留 <br>* 其他字符轉成%XX的格式,X是16進制的大寫字符,范圍是[0-9A-F]* <p>* 這里會有誤差,比如輸入一個字符串 123+456,它到底是原文就是123+456還是123 456做了URL編碼后的內容呢?<br>* 其實問題是一樣的,比如遇到123%2B456,它到底是原文即使如此,還是123+456URL編碼后的呢? <br>* 在這里,我認為只要符合URL編碼規范的,就當作已經URL編碼過了<br>* 畢竟這個方法的初衷就是判斷string是否urlEncode過<br>** @param str* @return*/public static boolean hasUrlEncoded(String str) {boolean needEncode = false;for (int i = 0; i < str.length(); i++) {char c = str.charAt(i);if (dontNeedEncoding.get((int) c)) { // 判斷字符是不是URL編碼保留的字符,是就可以不要編碼,也就是可以認為已經URL編碼過了continue;}// 不是URL編碼保留的字符,那么就判斷是否符合URL編碼的格式:%XX,X是16進制數if (c == '%' && (i + 2) < str.length()) {char c1 = str.charAt(++i);char c2 = str.charAt(++i);if (isDigit16Char(c1) && isDigit16Char(c2)) {continue;}}// 即不是URL保留字符,也不符合URL編碼格式,表示字符串不是URL編碼字符串needEncode = true;break;}return !needEncode;}/*** 判斷c是否是16進制的字符** @param c* @return*/private static boolean isDigit16Char(char c) {return (c >= '0' && c <= '9') || (c >= 'A' && c <= 'F');} }

總結

以上是生活随笔為你收集整理的判断字符串是不是application/x-www-form-urlencoded字符串(URL编码格式的字符串)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。