- 1、本文档共8页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
URL 中文参数压缩算法
CN 102801430 B 说 明 书 1/4页
URL中文参数压缩算法
技术领域
[0001] 本发明涉及URL编码技术领域,特别是一种URL中文参数压缩算法。
背景技术
[0002] URL参数是追加到URL 上的一个名称/值对,RFC1738、RFC3986等相关文档规定,
需要对URL参数中的中文进行编码后再传送。URL编码是对不安全字符以百分号(%)用十六
进制进行编码,只有US-ASCII字符集的一个子集的字符才能允许出现在URL中。
[0003] Web 编程语言如 JavaScript、PHP 等提供了 URL 编码函数如 escape、encodeURI、
urlencode等,但这些函数对URL的中文参数编码后长度过长。浏览器和服务器对URL的长
度有一定的限制,过长的 URL 不仅可能导致服务器产生拒绝请求服务的错误,在海量用户
环境下还会影响请求的提交和服务器响应。
发明内容
[0004] 本发明的目的在于提供一种 URL 中文参数压缩算法,该算法压缩效果好,有利于
减小URL的中文参数的编码长度。
[0005] 本发明采用的技术方案是:一种 URL 中文参数压缩算法,按如下步骤进行中文编
码:
[0006] 步骤1:将16位的汉字Unicode值左移两位成18位,然后表示成长度分别为6位、
6位、6位的三块;
[0007] 步骤2:当第二块的二进制值为111110或111111时,将第二块前五位的任意一位
与第三块的末位交换;
[0008] 步骤 3:将经过步骤 1、2 处理的汉字二进制编码进行 Base64 编码,实现 URL 中文
参数的压缩。
[0009] 当Web页面采用Unicode 1.0的CJK统一字符或GB2312编码时,可采用该算法进
行URL中文参数的压缩。
[0010] 当 Web 页面采用 BIG5 或 GBK 编码时,对于映射到 Unicode 的编码值不在
U+4E00~U+9FA5范围中的CJK兼容汉字,按如下方法进行编码:先将16位的汉字Unicode值
左移两位成18位,并表示成长度分别为6位、6位、6位的三块,然后将第一块的最后两位交
换,最后将经过处理的汉字二进制编码进行Base64编码,实现URL中文参数的压缩。
[0011] 本发明的有益效果是针对URL中文参数的特点,结合Base64设计并实现了一种改
良的 URL 中文参数压缩算法。该算法压缩效果好,应用广泛,适用于多种中文字符集编码。
该算法不仅一定程度上避免了 URL 长度超过浏览器 / 服务器的限制,而且显著减少服务器
不必要的流量,并缩短服务器的响应时间,提升在网络拥塞情况下用户的浏览体验。
附图说明
[0012] 图1是本发明算法的工作流程图。
3
3
CN 102801430 B 说 明 书 2/4页
[0013] 图2是Base64算法的编码过程图。
[0014] 图3是本发明算法在Unicode值的第二块出现111110或111111时的编码过程图。
[0015] 图4是CP936中映射到Unicode的编码值不在U+4E00~U+9FA5范围中的21个CJK
兼容字符列表。
[0016] 图5是本发明算法在Unicode值的第一块出现111110时的编码过程图。
具体实施方式
[0017] 本发明URL中文参数压缩算法,按如下步骤进行中文编码:
[0018] 步骤1:把16位的二进制汉字Unicode值左移两位转换成18位,然后表示成长度
分别为6位、6位、6位的三块,易知只有第二块的十进制值可能为62(二进制111110)或63
(二进制111111);
[0019] 步骤2:当第二块的二进制值为111110或111111时,将第二块前五位的任意一位
与第三块的末位交换;
[0020] 步骤 3:将经过步骤 1、2 处理的汉字二进制编码进行 Base64 编码,实现 URL 中文
参数的压缩。
[0021] 在本实施例中,当第二块的二进制值为111110或1111
文档评论(0)