- 浏览: 272163 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
chenshi011:
无意中,看到LZ博客感觉多门语言都精通啊,尤其还做GIS啊,敢 ...
WorldWind学习笔记[一] -
supperman:
不能用~!
windows下Nginx启动、关闭、重启bat工具 -
join_lin:
攒。。
spket.config.xml -
awaterway:
可以用,多谢
IntelliJ IDEA 9.0 注册机/注册码/keygen/破解版 -
qq3553174:
你好,我刚刚接触仿真地图。请问如果要将世界风嵌入AIR程序中如 ...
WorldWind学习笔记[一]
//编码escape 解码unescape document.write(escape("複雜的中文中國龍")+"<br/>"); //%u8907%u96DC%u7684%u4E2D%u6587%u4E2D%u570B%u9F8D document.write(escape((escape("複雜的中文中國龍")))+"<br/>"); //%25u8907%25u96DC%25u7684%25u4E2D%25u6587%25u4E2D%25u570B%25u9F8D //一次escape编码后%u8907如果改成\u8907就是Unicode码表示方式,如果传到Java里用 //request.getParameter("name");获取,% 还要再编码,用两次escape就可以把%变成%25 //这样request.getParameter("name")就能拿到%u8907这样的字符串,用Escape.java转成汉字就可以 //如果用encodeURI同样由于%问题在js也要用两次再传给Java,那么Java里就可以用自带的java.net.URLDecoder。
Java解码,编码
package cn.cjxo; public class Escape { 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 }; 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 (ch == ' ') { // space : map to '+' sbuf.append('+'); } else if ('A' <= ch && ch <= 'Z') { // 'A'..'Z' : as it was sbuf.append((char) ch); } else if ('a' <= ch && ch <= 'z') { // 'a'..'z' : as it was sbuf.append((char) ch); } else if ('0' <= ch && ch <= '9') { // '0'..'9' : as it was sbuf.append((char) ch); } else if (ch == '-' || ch == '_' // unreserved : as it was || ch == '.' || ch == '!' || ch == '~' || ch == '*' || ch == '\'' || ch == '(' || ch == ')') { sbuf.append((char) ch); } else if (ch <= 0x007F) { // other ASCII : map to %XX sbuf.append('%'); sbuf.append(hex[ch]); } else { // unicode : map to %uXXXX sbuf.append('%'); sbuf.append('u'); sbuf.append(hex[(ch >>> 8)]); sbuf.append(hex[(0x00FF & ch)]); } } return sbuf.toString(); } 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 (ch == '+') { // + : map to ' ' sbuf.append(' '); } else if ('A' <= ch && ch <= 'Z') { // 'A'..'Z' : as it was sbuf.append((char) ch); } else if ('a' <= ch && ch <= 'z') { // 'a'..'z' : as it was sbuf.append((char) ch); } else if ('0' <= ch && ch <= '9') { // '0'..'9' : as it was sbuf.append((char) ch); } else if (ch == '-' || ch == '_' // unreserved : as it was || ch == '.' || ch == '!' || ch == '~' || ch == '*' || ch == '\'' || ch == '(' || ch == ')') { sbuf.append((char) ch); } else if (ch == '%') { int cint = 0; if ('u' != s.charAt(i + 1)) { // %XX : map to ascii(XX) cint = (cint << 4) | val[s.charAt(i + 1)]; cint = (cint << 4) | val[s.charAt(i + 2)]; i += 2; } else { // %uXXXX : map to unicode(XXXX) 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); } 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 Escape { public static String escape(String src) { int i; char j; StringBuffer tmp = new StringBuffer(); tmp.ensureCapacity(src.length() * 6); for (i = 0; i < src.length(); i++) { j = src.charAt(i); if (Character.isDigit(j) || Character.isLowerCase(j) || Character.isUpperCase(j)) tmp.append(j); else if (j < 256) { tmp.append("%"); if (j < 16) tmp.append("0"); tmp.append(Integer.toString(j, 16)); } else { tmp.append("%u"); tmp.append(Integer.toString(j, 16)); } } return tmp.toString(); } public static String unescape(String src) { StringBuffer tmp = new StringBuffer(); tmp.ensureCapacity(src.length()); int lastPos = 0, pos = 0; char ch; while (lastPos < src.length()) { pos = src.indexOf("%", lastPos); if (pos == lastPos) { if (src.charAt(pos + 1) == 'u') { ch = (char) Integer.parseInt(src .substring(pos + 2, pos + 6), 16); tmp.append(ch); lastPos = pos + 6; } else { ch = (char) Integer.parseInt(src .substring(pos + 1, pos + 3), 16); tmp.append(ch); lastPos = pos + 3; } } else { if (pos == -1) { tmp.append(src.substring(lastPos)); lastPos = src.length(); } else { tmp.append(src.substring(lastPos, pos)); lastPos = pos; } } } return tmp.toString(); } }
发表评论
-
使用Spring @Scheduled注解执行定时任务
2015-07-30 01:45 2080配置我们的dispatcherContex ... -
maven 添加 本地 jar
2013-09-10 23:31 758先在pom.xml中添加一个资源: <repositor ... -
maven scope含义的说明
2013-09-09 13:27 719依赖范围控制哪些依赖在哪些classpath 中可用,哪些依赖 ... -
JPA Criteria API
2013-01-27 22:19 3227//hibernate 3.5.1 // //Simple ... -
Google Code personal maven repository
2012-12-28 11:59 1660Getting your jar of a library o ... -
URLConnection 读写url
2012-12-12 22:16 916protected void doGet(HttpServle ... -
Spring MVC 笔记 1
2012-10-18 12:35 10971.新建maven 工程 mvn archetype:gene ... -
java持久化jpa笔记
2012-09-19 20:10 895@Entity//标识这个pojo是一个jpa实体 @Tab ... -
Java泛型接口
2012-09-16 17:40 927package me.cjx.example; interf ... -
Windows中Java连接Access数据库
2012-09-16 12:00 16311、直接在Java代码内部Access数据库package m ... -
maven使用时发生tools.jar错误
2012-07-26 22:59 3737在Maven使用时会发生tools.jar这个包错误,查看Bu ... -
maven最基本的建项目和运行
2012-06-04 08:19 1075建一个空的普通app项目 mvn archetype:crea ... -
Java获得客户端真实IP
2012-05-28 19:57 998获得客户端真实IP地址的方法一: public String ... -
APK反编译
2010-10-14 14:35 1903反编译apk 一、更改apk文件的后缀名,如:citymap. ... -
GIS
2010-05-18 17:11 1482============================Lin ... -
HP大中华区总裁孙振耀职场九大感言
2010-03-21 22:05 1063如果这篇文章没有分享 ... -
nexus服务搭建
2010-02-22 01:18 13141.下载Nexus 2.解压即可 配置文件($nexus_pa ... -
Maven DOS
2010-02-21 15:58 18261) 安装Maven,跟装ant一样,官方网站http://m ... -
Maven 使用笔记
2010-02-10 21:27 0m2e具有哪些特性: http://m2eclipse.son ... -
开发工具信息备份
2010-01-30 05:42 1634/*============================= ...
相关推荐
标题中的“URL编码解码小程序”指的是一个工具或软件,其主要功能是处理URL(统一资源定位符)中的编码问题。URL编码是互联网通信中的一种标准化机制,它确保非ASCII字符或特殊字符在URL中能被正确传输和解析。这是...
总的来说,"URL编码解码小工具"是一款实用的软件,它的存在解决了URL编码解码过程中的繁琐问题,使得无论是开发人员还是普通用户,都能方便快捷地处理URL编码相关的事务。通过支持GB2312和UTF8这两种常见的字符编码...
URL编码与解码是互联网通信中的重要环节,它涉及到数据在网络中传输时的标准化..."URL编码解码工具.exe" 提供了一个直观、便捷的方式来操作和分析URL,对于IT从业者,尤其是Web开发者来说,是一个非常实用的辅助工具。
1. 字符编码:URL编解码通常基于ASCII编码,但现代的URL标准(如RFC3986)推荐使用UTF-8编码。在易语言中,你需要选择合适的字符编码方式来处理非ASCII字符。 2. 转义字符:易语言需要识别哪些字符需要转义,并用...
URL编码解码用于URL进行编码和解码两个操作,编码就是将人能看懂的汉字等变成浏览器可以识别的url,解码就是将url后面的字符解码为人能读懂的
在python中url,对于中文等非ascii码字符,需要进行参数的编码与解码。 二、关键代码 1、url编码 对字符串编码用urllib.parse包下的quote(string, safe=’/’, encoding=None, errors=None)方法。 对json格式的参数...
在Java编程语言中,`URLDecoder`和`URLEncoder`是两个非常重要的工具类,主要用于处理URL中的中文字符和其他特殊...理解它们的工作原理和使用方法,能帮助开发者避免编码解码过程中的常见问题,保证数据传输的准确性。
URL传参数时出现中文乱码的主要原因在于字符编码的不一致。通常,Web应用在处理请求时,会涉及到多个环节的编码转换,包括客户端发送请求、网络传输、服务器接收及处理等阶段。如果这些环节中的编码设置不统一,尤其...
而从URL编码解码到GB2312,就是将每个百分号后面的两位十六进制数转换回8位二进制,然后再组合成GB2312字符。 对于UTF-8,它的编码规则更为复杂,因为它可以表示更多的字符。UTF-8使用1到4个字节来表示一个Unicode...
在IT行业中,URL编码与解码是网络编程中不可或缺的一部分,尤其在处理包含特殊字符的网址时显得尤为重要。淘宝作为中国最大的电商平台,其URL中可能包含各种参数,这些参数需要进行正确的编码和解码以确保数据传输的...
### JS实现URL编码转换中文 在Web开发过程中,经常需要处理URL中的特殊字符,特别是中文字符。由于URL传输限制及浏览器解析原因,中文等非ASCII字符需要被编码为特定格式才能在网络上传输。本文将详细介绍如何使用...
易语言的URL编解码源码通常由一系列函数组成,这些函数分别负责编码和解码。在提供的“url编解码.e”文件中,我们可以看到易语言编写的汇编源码实现。汇编语言是一种低级语言,直接对应于机器指令,因此其效率高但...
- 解码时应正确处理百分号 "%" 和连续的编码序列,如"%20%20"。 - 对于某些非ASCII字符,如中文、日文等,可能需要使用更复杂的编码和解码方式,如UTF-8。 综上所述,易语言URL解码算法是通过易语言的内置函数和...
通过URLEncoder.encode加密地址栏url上得中文字符, 并可通过java.net.URLDecoder.decode(str, charset)解密中文
当URL包含非ASCII字符,如中文、法文等其他语言字符时,为了在HTTP协议和网络传输过程中保持数据的完整性,我们需要对这些特殊字符进行编码。这个"URL编解码程序"就是针对这一需求开发的,主要用于网络爬虫技术中...
总结来说,纯JavaScript实现GBK URL编解码涉及到的关键技术点包括GBK编码和解码、URL编码和解码,以及可能的Base64编码和解码。实际实现时,可能需要结合第三方库或自定义函数来处理GBK编码,同时充分利用JavaScript...
"源码快车URL编解码工具"是一个使用易语言开发的应用程序,主要用于处理URL(统一资源定位符)的编码和解码。 在互联网中,URL是网页、文件或其他网络资源的地址,它包含了一系列的字符。然而,URL中可能包含特殊...
4. 非ASCII字符,如中文、日文等,需要使用UTF-8编码转换成多个十六进制序列后再进行URL编码。 URL编码的应用场景包括但不限于: 1. 查询字符串:在URL中的"?"后面的部分,用于传递参数,如`...
GBK编码是中国大陆广泛使用的汉字编码标准,它包含了GB2312字符集以及一些扩展的汉字和符号,能够表示超过20000个汉字。 在编程中,处理包含中文或其他非英文字符的URL时,通常需要进行URL编码。这是因为URL只允许...