怎么只做自己的电商网站,石家庄发布最新公告,电脑编程网站,做爰全过程免费网站URL编码概述 HTTP协议只支持iso8859-1字符集。 而此字符集中只有英文数字常见符号。 所以HTTP原生是无法传输非iso8859-1字符的。 为了解决这个问题#xff0c;提出了一种称之为URL编码的解决方案。 URL编解码详解 将非iso8859-1字符#xff0c;进行转换 先将字符按照指定码表… URL编码概述 HTTP协议只支持iso8859-1字符集。 而此字符集中只有英文数字常见符号。 所以HTTP原生是无法传输非iso8859-1字符的。 为了解决这个问题提出了一种称之为URL编码的解决方案。 URL编解码详解 将非iso8859-1字符进行转换 先将字符按照指定码表(utf-8)转换为二进制 再将二进制转为十六进制 再在每个十六进制字节前拼接百分号得到字符的URL编码形式 注意只对非iso8859-1的字符进行这样的处理 向去掉十六进制字节前的百分号 将十六进制转为二进制 再按照指定码表(utf-8)将二进制转换为字符 正常情况下浏览器和服务器会自动进行URL编解码操作不需要开发人员关心。 但某些开发过程中开发人员直接操作HTTP协议相关内容(发送Cookie、设置响应头等等)需要开发人员手动编解码处理非iso8859-1数据。 static String encode(String s, String enc) 使用指定的编码机制将字符串转换为 application/x-www-form-urlencoded 格式。 static String decode(String s, String enc) 使用指定的编码机制对 application/x-www-form-urlencoded 字符串解码。 发送Cookie时用户名需要进行URL编码 if(true.equals(remname)){ //用户勾选了记住用户名发送cookie保存用户名 Cookie remnamec new Cookie(remnamec, URLEncoder.encode(username,utf-8)); remnamec.setMaxAge(60 * 60 * 24 * 30);//保存30天 remnamec.setPath(request.getContextPath());//访问当前应用路径及其子孙路径都要带回来 response.addCookie(remnamec); } 在登录页面URL解码显示用户名 % //从Cookie中获取记住的用户名 Cookie [] cs request.getCookies(); Cookie findC null; if(cs!null){ for(Cookie c : cs){ if(remnamec.equals(c.getName())){ findC c; break; } } } String uname ; if(findC!null){ String v findC.getValue(); uname URLDecoder.decode(v,utf-8); } % tdinput typetext nameusername value%uname%//td Url编码注意事项 保留字符的编码URL 中某些字符具有特殊含义或者不能直接在 URL 中使用比如空格、问号、井号等。这些字符需要被正确编码以确保 URL 的有效性和可靠性。 编码规范URL 编码一般使用 UTF-8 编码这样可以涵盖广泛的字符集。确保在编码之前明确使用的字符集以避免因编码不一致而导致的问题。 路径和查询参数的区别对于 URL 中的路径部分和查询参数部分编码的方式有所不同。路径部分的编码与整体 URL 编码相同而查询参数中的空格、问号等应该使用特定的编码方式比如空格用 %20 替代。 特殊字符的处理一些字符在 URL 编码时会有不同的表示方法比如空格可以用 %20 或 表示根据具体的需求和标准进行选择。 安全字符的处理除了保留字符外大部分 ASCII 字符都是安全的不需要额外编码。但为了避免混淆和提高可读性可以对所有字符进行统一的编码处理。 URL 长度限制某些环境下对 URL 长度有限制因此应该尽量减少不必要的编码或者尝试使用更短的编码方式。