我思故我強

          Escape/unescape的Java實現


          Escape/unescape的Java實現

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

          posted on 2007-09-20 18:21 李云澤 閱讀(377) 評論(0)  編輯  收藏 所屬分類: Java代碼

          主站蜘蛛池模板: 淮北市| 灌南县| 武义县| 京山县| 阜新市| 剑河县| 涟源市| 兴业县| 余姚市| 孟州市| 宝鸡市| 神池县| 荣成市| 英德市| 武陟县| 南充市| 遂溪县| 永福县| 昆明市| 百色市| 成武县| 文水县| 普兰店市| 新昌县| 永登县| 南溪县| 富锦市| 徐水县| 新源县| 社旗县| 凤阳县| 河北区| 大关县| 克什克腾旗| 宁津县| 宜君县| 海城市| 泰宁县| 区。| 黄浦区| 大庆市|