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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時(shí)間:2023/12/3 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 判断字符串是不是application/x-www-form-urlencoded字符串(URL编码格式的字符串) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
package priv.lwx.cs.util;import java.util.BitSet;/*** 判斷一個(gè)字符串是不是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;// 將小寫(xiě)英文字母添加到BitSet對(duì)象中for (i = 'a'; i <= 'z'; i++) {dontNeedEncoding.set(i);}// 將大寫(xiě)英文字母添加到BitSet對(duì)象中for (i = 'A'; i <= 'Z'; i++) {dontNeedEncoding.set(i);}// 將阿拉伯?dāng)?shù)字添加到BitSet對(duì)象中for (i = '0'; i <= '9'; i++) {dontNeedEncoding.set(i);}// 將其它URL編碼保留的字符添加到BitSet對(duì)象中dontNeedEncoding.set('+');dontNeedEncoding.set('-');dontNeedEncoding.set('_');dontNeedEncoding.set('.');dontNeedEncoding.set('*');}/*** 判斷字符串是否URLEncoder.encode過(guò)<br>* 經(jīng)常遇到這樣的情況,拿到一個(gè)URL,但是搞不清楚到底要不要encode<Br>* 不做encode吧,擔(dān)心出錯(cuò),做encode吧,又怕重復(fù)了<Br>* 支持JAVA的URLEncoder.encode出來(lái)的string做判斷。* URL編碼格式:* 將' '轉(zhuǎn)成'+' <br>* 0-9a-zA-Z保留 <br>* '-','_','.','*'保留 <br>* 其他字符轉(zhuǎn)成%XX的格式,X是16進(jìn)制的大寫(xiě)字符,范圍是[0-9A-F]* <p>* 這里會(huì)有誤差,比如輸入一個(gè)字符串 123+456,它到底是原文就是123+456還是123 456做了URL編碼后的內(nèi)容呢?<br>* 其實(shí)問(wèn)題是一樣的,比如遇到123%2B456,它到底是原文即使如此,還是123+456URL編碼后的呢? <br>* 在這里,我認(rèn)為只要符合URL編碼規(guī)范的,就當(dāng)作已經(jīng)URL編碼過(guò)了<br>* 畢竟這個(gè)方法的初衷就是判斷string是否urlEncode過(guò)<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編碼保留的字符,是就可以不要編碼,也就是可以認(rèn)為已經(jīng)URL編碼過(guò)了continue;}// 不是URL編碼保留的字符,那么就判斷是否符合URL編碼的格式:%XX,X是16進(jìn)制數(shù)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進(jìn)制的字符** @param c* @return*/private static boolean isDigit16Char(char c) {return (c >= '0' && c <= '9') || (c >= 'A' && c <= 'F');} }

總結(jié)

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

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。