Java解码网站post字符串(swich case用法和乱码判断)
生活随笔
收集整理的這篇文章主要介紹了
Java解码网站post字符串(swich case用法和乱码判断)
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
對(duì)網(wǎng)站post字符串進(jìn)行解碼,用常見(jiàn)字符集試驗(yàn),用了switch case并對(duì)亂碼做判斷,如果是js加密且ContentType文件類(lèi)型是text/octet純二進(jìn)制就無(wú)法解碼。具體代碼如下:
public class DPIPost { //判斷是否是亂碼private static boolean isMessyCode(String strName) {try {Pattern p = Pattern.compile("\\s*|\t*|\r*|\n*");Matcher m = p.matcher(strName);String after = m.replaceAll("");String temp = after.replaceAll("\\p{P}", "");char[] ch = temp.trim().toCharArray();int length = (ch != null) ? ch.length : 0;for (int i = 0; i < length; i++) {char c = ch[i];if (!Character.isLetterOrDigit(c)) {String str = "" + ch[i];//if (!str.matches("[\u4e00-\u9fa5]+")) {if (!str.matches("[0-9a-zA-Z\\u4e00-\\u9fa5]+")){return true;}}}} catch (Exception e) {e.printStackTrace();}return false;} @SuppressWarnings("finally")public static String decodePostData(String postdata) throws UnsupportedEncodingException{String charSet="Base64";//字符集String retPostdata=postdata;//返回值try{switch(charSet){case "Base64"://base64解碼byte[] bEncode=postdata.getBytes();//獲取post串的字節(jié)byte[] bDecode= it.sauronsoftware.base64.Base64.decode(bEncode);//用base64解碼String strBase64=new String(bDecode); if(strBase64.contains("&") && strBase64.contains("=") && !strBase64.contains("%")){//解碼成功的標(biāo)志String str1=strBase64.replaceAll("&", "a");String str2=str1.replaceAll("=", "b");if(!DPIPost.isMessyCode(str2)) {//不含有亂碼retPostdata= strBase64;break; }}else if(strBase64.contains("%")) {//需URL解碼postdata=strBase64; }charSet="UTF-8";case "UTF-8": String strUTF8=URLDecoder.decode(postdata,charSet);if(strUTF8.contains("&") && strUTF8.contains("=")){//解碼成功的標(biāo)志String str1=strUTF8.replaceAll("&", "a");String str2=str1.replaceAll("=", "b");if(!DPIPost.isMessyCode(str2)) {//不含有亂碼retPostdata= strUTF8;break; }}charSet="UTF-16";case "UTF-16": String strUTF16=URLDecoder.decode(postdata,charSet);if(strUTF16.contains("&") && strUTF16.contains("=")){//解碼成功的標(biāo)志String str1=strUTF16.replaceAll("&", "a");String str2=str1.replaceAll("=", "b");if(!DPIPost.isMessyCode(str2)) {//不含有亂碼retPostdata= strUTF16;break; }}charSet="GBK";case "GBK": String strGBK=URLDecoder.decode(postdata,charSet);if(strGBK.contains("&") && strGBK.contains("=")){//解碼成功的標(biāo)志String str1=strGBK.replaceAll("&", "a");String str2=str1.replaceAll("=", "b");if(!DPIPost.isMessyCode(str2)) {//不含有亂碼retPostdata= strGBK;break; }}charSet="GB2312";case "GB2312": String strGB2312=URLDecoder.decode(postdata,charSet);if(strGB2312.contains("&") && strGB2312.contains("=")){//解碼成功的標(biāo)志String str1=strGB2312.replaceAll("&", "a");String str2=str1.replaceAll("=", "b");if(!DPIPost.isMessyCode(str2)) {//不含有亂碼retPostdata= strGB2312;break; }}charSet="GB18030";case "GB18030": String strGB18030=URLDecoder.decode(postdata,charSet);if(strGB18030.contains("&") && strGB18030.contains("=")){//解碼成功的標(biāo)志String str1=strGB18030.replaceAll("&", "a");String str2=str1.replaceAll("=", "b");if(!DPIPost.isMessyCode(str2)) {//不含有亂碼retPostdata= strGB18030;break; }}charSet="UNICODE";case "UNICODE": String strUnicode=URLDecoder.decode(postdata,charSet);if(strUnicode.contains("&") && strUnicode.contains("=")){//解碼成功的標(biāo)志String str1=strUnicode.replaceAll("&", "a");String str2=str1.replaceAll("=", "b");if(!DPIPost.isMessyCode(str2)) {//不含有亂碼retPostdata= strUnicode;break; }}charSet="BIG5";case "BIG5": String strBig5=URLDecoder.decode(postdata,charSet);if(strBig5.contains("&") && strBig5.contains("=")){//解碼成功的標(biāo)志String str1=strBig5.replaceAll("&", "a");String str2=str1.replaceAll("=", "b");if(!DPIPost.isMessyCode(str2)) {//不含有亂碼retPostdata= strBig5;break; }}charSet="ISO-8859-1";case "ISO-8859-1":String strISO88591=URLDecoder.decode(postdata,charSet);if(strISO88591.contains("&") && strISO88591.contains("=")){//解碼成功的標(biāo)志String str1=strISO88591.replaceAll("&", "a");String str2=str1.replaceAll("=", "b");if(!DPIPost.isMessyCode(str2)) {//不含有亂碼retPostdata= strISO88591;break; }}default:retPostdata=postdata;break;} }catch(IOException e){e.printStackTrace();}finally {return retPostdata;}}public static void main(String[] args) throws Exception {//String postdata="FPLVSUxLBLWTSXU42VSTphDvrt+4N/Dgg98AGwTGreaSx+02QKL7UaP9g25SBcW3wVJbIWyFmdg1TWijkOClg7VLbC9RNDKecYrtY9FMasrBjRfaOsPSnotLc56WZnW5mRMgZWnCz9uO2oIXAPCTvFydjXwUpkDSxsl0KHQQ6cLOlzNgh5yzZesB6XiSdXYKeaydFZtaScf0HgWZwweiqajmWZVnot4cGKJzCmDChtp6CgcZ5/TSE1Of34d9mJWTwYU0bfjb/ah1BqYMB/Wh4ZPqIoWoCrzSN/+IKg9Phnh9foRBAlljaTNxQwCtZcdHyOwfkcePHtXp4hueE1BRfylrAjYC5fzZb9A75vR9lkNFT73XLWeLh1ar83QTDQiSwHy4nLbqfymmvtIx5NlFrsWcKQrO9o0vfJp7fF2ECemUU0u8afKxrQlqEnleke6Teytg3tBeef8xc0qduKXga36vcqf6C2gAgHlO/RZ/L0XjZWk9EKG3du188oU6rolhKbsCOjEb4wXtoPGxBLu/LDHqbS+HZtR6SvBW0wNp2HjWbPuVkauu8ZSuATlJJk+fSwA9X76ndDLdTbuulciAqqsW6RvqqNI/4YcHwvSDOwo=";//String postdata="YXBwa2V5PThjMDAyYzVjMzBkNSZkZXZpY2U9NDBjZmIyMjg2OTY5ODExZmYyZTQ1NGI5OWRlOGUyYmZkN2Y2YmZmYiZwbGF0PTEmYXBwcGtnPWNvbS5kZXdtb2JpbGUua3VhaXlhJmFwcHZlcj0xNDQmc2RrdmVyPTYwMDU2Jm5ldHdvcmt0eXBlPXdpZmk=";String postdata="dnY9MCUwOTIwMTYtMDctMjYrMDAlM0EwNCUzQTAwJTA5MzUyNzQ2MDY2Njc0MjUyJTA5R1Bob25lJTA5NC40LjIlMDkxOTIwKjEwODAlMDlTTS1OOTAwJTA5MSUwOTExODk4ODAwMzElMDk2OTg0MjY0MjQ4M2FkZDBhNjM1MDMzMDZkNjNmMDQ0MyUwOTcuMyUwOTUxMzE0MDkwMCUwOTEzJTA5MSUwOTEwJTA5JTA5MCUwOTAlMDkxJTA5MSUwOTIxNTMlMDkxJTA5NzI3NDglMDkxNiUwOTAlMDkxJTA5MjAwJTA5MCUwOTExMy4wNzQ0MyUyQzIyLjg2ODM4NCUwOTIwMCUwOTUxMzE0MDkwMCUwOTAlMDkxMSUwOSUwOWE0MzQ0YWJlNmU1NmE5MjgwYmViMGVkNWFiNTc0ZTc2JTA5ZTc3Yjg3OTkyNzQzNTJjZiUwOSUwOTElMDkwJTA5MSUwOTc0MjE3JTA5MCUwOTElMDk2MTNBMDFFNjYzNkY1MTc2NUNDN0M4QTYzOTM3RjVGQyUwOSUyNnVwZGVyaWQlM0QlMDklMDkwJTA5JTA5JTA5JTA5cXlfaG9tZSUyQ1IlM0EyMDQ4MzUxMTIlM0E2JTJDMTAwJTJDKyUyQzElMDklMDklMDkwJTA5MCUwOTAlMDkwJTA5LTElMDklN0IlMjJydHlwZSUyMiUzQSUyMjElMjIlMkMlMjJwb3AlMjIlM0ElMjIxJTIyJTJDJTIycG9zJTIyJTNBJTIyMCUyMiU3RCUwOSUwOXZiN3JuaGExY2s1a3pvdGQlMDkwJTA5Y25fcw==";String retPostData=DPIPost.decodePostData(postdata);if(retPostData != postdata) System.out.println(retPostData);} }總結(jié)
以上是生活随笔為你收集整理的Java解码网站post字符串(swich case用法和乱码判断)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Centos下Web中间件Jboss应用
- 下一篇: Java键盘字符乱码判断代码