1. 程式人生 > >頁面傳遞過程中的編碼解碼

頁面傳遞過程中的編碼解碼

public class EncodeEscape {        private final static String[] hex = { "00", "01", "02", "03", "04", "05",        "06", "07", "08", "09", "0A", "0B", "0C", "0D", "0E", "0F", "10",        "11", "12", "13", "14", "15", "16", "17", "18", "19", "1A", "1B",        "1C", "1D", "1E", "1F", "20", "21", "22", "23", "24", "25", "26",        "27", "28", "29", "2A", "2B", "2C", "2D", "2E", "2F", "30", "31",        "32", "33", "34", "35", "36", "37", "38", "39", "3A", "3B", "3C",        "3D", "3E", "3F", "40", "41", "42", "43", "44", "45", "46", "47",        "48", "49", "4A", "4B", "4C", "4D", "4E", "4F", "50", "51", "52",        "53", "54", "55", "56", "57", "58", "59", "5A", "5B", "5C", "5D",        "5E", "5F", "60", "61", "62", "63", "64", "65", "66", "67", "68",        "69", "6A", "6B", "6C", "6D", "6E", "6F", "70", "71", "72", "73",        "74", "75", "76", "77", "78", "79", "7A", "7B", "7C", "7D", "7E",        "7F", "80", "81", "82", "83", "84", "85", "86", "87", "88", "89",        "8A", "8B", "8C", "8D", "8E", "8F", "90", "91", "92", "93", "94",        "95", "96", "97", "98", "99", "9A", "9B", "9C", "9D", "9E", "9F",        "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A9", "AA",        "AB", "AC", "AD", "AE", "AF", "B0", "B1", "B2", "B3", "B4", "B5",        "B6", "B7", "B8", "B9", "BA", "BB", "BC", "BD", "BE", "BF", "C0",        "C1", "C2", "C3", "C4", "C5", "C6", "C7", "C8", "C9", "CA", "CB",        "CC", "CD", "CE", "CF", "D0", "D1", "D2", "D3", "D4", "D5", "D6",        "D7", "D8", "D9", "DA", "DB", "DC", "DD", "DE", "DF", "E0", "E1",        "E2", "E3", "E4", "E5", "E6", "E7", "E8", "E9", "EA", "EB", "EC",        "ED", "EE", "EF", "F0", "F1", "F2", "F3", "F4", "F5", "F6", "F7",        "F8", "F9", "FA", "FB", "FC", "FD", "FE", "FF" };           private final static byte[] val = { 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,        0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,        0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,        0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,        0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x00, 0x01,        0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x3F, 0x3F, 0x3F,        0x3F, 0x3F, 0x3F, 0x3F, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x3F,        0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,        0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,        0x3F, 0x3F, 0x3F, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x3F, 0x3F,        0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,        0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,        0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,        0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,        0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,        0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,        0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,        0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,        0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,        0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,        0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,        0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,        0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,        0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F };           /** *//**        * 編碼      *         * @param s        * @return        */       public static String escape(String s) {        StringBuffer sbuf = new StringBuffer();        int len = s.length();        for (int i = 0; i < len; i++) {        int ch = s.charAt(i);        if ('A' <= ch && ch <= 'Z') {        sbuf.append((char) ch);        } else if ('a' <= ch && ch <= 'z') {        sbuf.append((char) ch);        } else if ('0' <= ch && ch <= '9') {               sbuf.append((char) ch);        } else if (ch == '-' || ch == '_'         || ch == '.' || ch == '!' || ch == '~' || ch == '*'        || ch == '/'' || ch == '(' || ch == ')') {        sbuf.append((char) ch);        } else if (ch <= 0x007F) {        sbuf.append('%');        sbuf.append(hex[ch]);        } else {        sbuf.append('%');        sbuf.append('u');        sbuf.append(hex[(ch >>> 8)]);        sbuf.append(hex[(0x00FF & ch)]);        }        }        return sbuf.toString();        }           /** *//**        * 解碼 說明:本方法保證 不論引數s是否經過escape()編碼,均能得到正確的“解碼”結果      *         * @param s        * @return        */       public static String unescape(String s) {        StringBuffer sbuf = new StringBuffer();        int i = 0;        int len = s.length();        while (i < len) {        int ch = s.charAt(i);        if ('A' <= ch && ch <= 'Z') {        sbuf.append((char) ch);        } else if ('a' <= ch && ch <= 'z') {         sbuf.append((char) ch);        } else if ('0' <= ch && ch <= '9') { sbuf.append((char) ch);        } else if (ch == '-' || ch == '_'|| ch == '.' || ch == '!' || ch == '~' || ch == '*'|| ch == '/'' || ch == '(' || ch == ')') {        sbuf.append((char) ch);        } else if (ch == '%') {        int cint = 0;        if ('u' != s.charAt(i + 1)) {        cint = (cint << 4) | val[s.charAt(i + 1)];        cint = (cint << 4) | val[s.charAt(i + 2)];        i += 2;        } else {        cint = (cint << 4) | val[s.charAt(i + 2)];        cint = (cint << 4) | val[s.charAt(i + 3)];        cint = (cint << 4) | val[s.charAt(i + 4)];        cint = (cint << 4) | val[s.charAt(i + 5)];        i += 5;        }        sbuf.append((char) cint);        } else {        sbuf.append((char) ch);        }        i++;        }        return sbuf.toString();        }           public static void main(String[] args) {        String stest = "1234 abcd[]()<+>,.~//";        System.out.println(stest);        System.out.println(escape(stest));        System.out.println(unescape(escape(stest)));          }           }

相關推薦

頁面傳遞過程編碼解碼

public class EncodeEscape {        private final static String[] hex = { "00", "01", "02", "03", "04"

URL傳遞過程幾種編碼escape()、encodeURI()、encodeURIComponent()

在地址URL傳輸過程中常常需要對中文,特殊符號等進行編碼,常用到的編碼方式有escape()、encodeURI()、encodeURIComponent() 一文中有詳細的闡述,本人只在這裡記錄一下個人的使用心得  首先escape()使用限制較多,轉碼也不完全,使用

web頁面編寫過程的中文亂碼問題解決

中文亂碼的出現是由於編碼和解碼的方式不同,只要將二者修改為對應的方式就成。具體解釋如下: 在剛學習web開發的時候常遇見中文亂碼的問題,而且根據網上的教程時而能解決,時而不能,主要原因是很多初學者不知道中文系統的瀏覽器的預設解碼字符集是 GB2312,而我們的編輯器常採用的是 UTF-8的解碼方

解決url傳遞過程加號變空格的問題

url傳遞過程中加號變空格 在接收url引數的過程中,會發現如果引數中存在‘+’號,接收後會變成空格。 如11+22接收後變成11 22。 要解決這個問題,需要將加號替換為%2B進行傳遞。 如11%2B22接收後變成11+22。 這種問題經常出現在字串加密傳遞的過

頁面載入過程的三個事件

頁面在載入的時候會先後觸發兩個事件:document的DOMContentLoaded,以及window.onload事件. DOMContentLoaded MDN上的解釋是當初始的 HTML 文件被完全載入和解析完成之後,DOMContentLoaded

題目:某個公司採用公用電話傳遞資料,資料是四位的整數,在傳遞過程中是加密的,加密規則如下:每位數字都加上5,然後用和除以10的餘數代替該數字,再將第一位和第四位交換,第二位和第三位交換。

題目:某個公司採用公用電話傳遞資料,資料是四位的整數,在傳遞過程中是加密的, 加密規則如下:每位數字都加上5,然後用和除以10的餘數代替該數字,再將第一位和第四位交換,第二位和第三位交換。package

接口傳遞過程遇到的問題以及解決方法

是我 也不會 文件 結構體 反序列化 暴露 信息保存 因此 頭文件 在工程中遇到以下情況: 為了進行相對底層的測試,需要將中間的算法結果傳遞到上層,在開始實現的時候,使用的方法是,在輸出結構體中添加一個成員結構體,然後將需要測試的東西都塞入這個結構體,供上層解析; 這樣實現

JSP頁面請求響應過程編碼解碼

該片簡要講述:JSP頁面傳輸過程中,瀏覽器與伺服器的編碼解碼以及HTTP協議對URL進行的編碼解碼。 問題如下: //所有的JSP頁面的編碼都是UTF-8的格式 //test1.jsp <%@ page language="java" import="ja

Android頁面跳轉過程值的傳遞

MainActivity.java部分程式碼 Intent intent = new Intent(MainActivity.this,ScowlViewActivity.class);//實現MainActivity向ScowlViewActivity跳轉 Bundle bundle

在java類傳遞中文的編碼解碼

平常我在jsp中傳遞引數,那麼在另外一個jsp中通過request.getParameter()得到引數值,中文和英文都能得到,但是在java中通過  Stirng LTloss=“中中中中-國國國國”; requestURL=“/reserve/loss/IBNR/pro

mui開發h5+app過程頁面間引數傳遞的總結第一篇

最近在學習mui開發APP,可以說是混合APP的開發。其中涉及到HTML5+的規範,非常值得學習。本人在學習過程中用到了hcoder的h.js也通過hcoder網站的教學視訊學習到很多非常有用的基礎的

spring頁面傳遞參數為Date類型自動轉換為字符串的方法

ring sim new spring 自動轉換 方法 -m web tom @InitBinder public void initBinder(WebDataBinder binder){ SimpleDateFormat sdf =new SimpleDateFor

python編碼解碼decode和encode的使用

python encode decode python 在處理字符串時經常遇到編碼錯誤,導致亂碼,且python 2.x和 python 3.x之間有很大的不同,先在這裏記錄一下,以後整理;轉載 文章一篇:http://www.cnblogs.com/evening/archive/2012/04

SQLin參數在存儲過程傳遞及使用的方法

str pro let 字符 spl eva lec creat create 背景: 1、使用存儲過程 2、存儲過程中有in 3、in括號裏面的內容作為參數傳遞 解決方案: 1、直接拼接sql 可在存儲過程中拼接字符串,然後執行此字符串,類似於js中的eval PROC

愛創課堂每日一題第五十七天-一個頁面從輸入 URL 到頁面加載顯示完成,這個過程都發生了什麽?

前端 前端學習 前端入門 北京前端分為4個步驟: (1),當發送一個URL請求時,不管這個URL是Web頁面的URL還是Web頁面上每個資源的URL,瀏覽器都會開啟一個線程來處理這個請求,同時在遠程DNS服務器上啟動一個DNS查詢。這能使瀏覽器獲得請求對應的IP地址。 (2), 瀏覽器與遠程

實際項目前後端傳輸字符串URL編解碼過程遇到的一些問題

component put 傳輸 之間 body unicode編碼 方式 gpo 項目 線上版本(包括12.2,12.3版本)中,參照過濾條件在傳輸過程中經過了URL編碼及解碼過程,前後端使用的API之間的差異導致一些問題,現記錄如下: 前端URL編碼API en

java 實現往oracle存儲過程傳遞array數組類型的參數

def tor except asp pri 定義 finally lean 多維 註:本文來源於 《 java 實現往oracle存儲過程中傳遞array數組類型的參數 》最近項目中遇到通過往存儲過程傳遞數組參數的問題, 浪費了N多個小時,終於有點頭緒。 具體的代

springmvc處理頁面傳遞的亂碼

亂碼 key spa app string def get pre list @RequestMapping("/search") public String searchItemList(String keyword, @Request