首页 > 其他分享 >使用URLDecoder和URLEncoder对中文进行处理

使用URLDecoder和URLEncoder对中文进行处理

时间:2023-09-21 15:16:07浏览次数:70  
标签:编码 中文 URLEncoder 转换 字节 字符 十六进制 xy URLDecoder


一 URLEncoder 
HTML 格式编码的实用工具类。该类包含了将 String 转换为 application/x-www-form-urlencoded MIME 格式的静态方法。有关 HTML 格式编码的更多信息,请参阅 HTML 规范。 

对 String 编码时,使用以下规则: 


字母数字字符 "a" 到 "z"、"A" 到 "Z" 和 "0" 到 "9" 保持不变。 
特殊字符 "."、"-"、"*" 和 "_" 保持不变。 
空格字符 " " 转换为一个加号 "+"。 
所有其他字符都是不安全的,因此首先使用一些编码机制将它们转换为一个或多个字节。然后每个字节用一个包含 3 个字符的字符串 "%xy" 表示,其中 xy 为该字节的两位十六进制表示形式。推荐的编码机制是 UTF-8。但是,出于兼容性考虑,如果未指定一种编码,则使用相应平台的默认编码。 
例如,使用 UTF-8 编码机制,字符串 "The string ü@foo-bar" 将转换为 "The+string+%C3%BC%40foo-bar",因为在 UTF-8 中,字符 ü 编码为两个字节,C3 (十六进制)和 BC (十六进制),字符 @ 编码为一个字节 40 (十六进制)。 

二 URLDecoder 
该类包含了将 String 从 application/x-www-form-urlencoded MIME 格式解码的静态方法。 

该转换过程正好与 URLEncoder 类使用的过程相反。假定已编码的字符串中的所有字符为下列之一:"a" 到 "z"、"A" 到 "Z"、"0" 到 "9" 和 "-"、"_"、"." 以及 "*"。允许有 "%" 字符,但是将它解释为特殊转义序列的开始。 
转换中使用以下规则: 


字母数字字符 "a" 到 "z"、"A" 到 "Z" 和 "0" 到 "9" 保持不变。 
特殊字符 "."、"-"、"*" 和 "_" 保持不变。 
加号 "+" 转换为空格字符 " "。 
将把 "%xy" 格式序列视为一个字节,其中 xy 为 8 位的两位十六进制表示形式。然后,所有连续包含一个或多个这些字节序列的子字符串,将被其编码可生成这些连续字节的字符所代替。可以指定对这些字符进行解码的编码机制,或者如果未指定的话,则使用平台的默认编码机制。 
该解码器处理非法字符串有两种可能的方法。一种方法是不管该非法字符,另一种方法是抛出 IllegalArgumentException 异常 

简单示例:

1. try {  
2. "中国", "utf-8");  
3. "处理后:" + encodeStr);  
4. "utf-8");  
5. "解码:" + decodeStr);  
6. catch (UnsupportedEncodingException e) {  
7. // TODO Auto-generated catch block  
8.             e.printStackTrace();  
9.         }


运行结果:

1. 处理后:%E4%B8%AD%E5%9B%BD  
2. 解码:中国

标签:编码,中文,URLEncoder,转换,字节,字符,十六进制,xy,URLDecoder
From: https://blog.51cto.com/u_16230604/7554597

相关文章

  • 解决ubuntu进入tty1...6后显示中文乱码的问题
    一、临时解决(足够)例如,进入tty2,查看$LANG和$LANGUAGE:$echo$LANGzh_CN.UTF-8;是什么不重要,这里主要是反映修改前后的不同$echo$LANGUAGEzh_CN:zh:en_US:en;是什么不重要,这里主要是反映修改前后的不同实验一下没有修改前的tty的输出:$rmfilerm:###&&**乱码修改设置,......
  • 操作系统中文件系统的实现和分配方式探析(上)
    虚拟文件系统在Linux文件系统中,用户空间、系统调用、虚拟机文件系统、缓存、文件系统以及存储之间存在着紧密的关系。如下图:在操作系统中,文件系统起到了重要的作用,它们负责管理操作系统中的文件和目录。然而,不同的文件系统有着不同的实现方式和存储位置。为了提供一个统一的......
  • 操作系统中文件系统的实现和分配方式探析(下)
    非连续空间存放方式我们已经对连续分配的方式有了一定的了解,并且也清楚了它存在的问题和局限性。为了解决这些问题,非连续存放的方式应运而生。非连续空间存储大致可以分为两种形式:链表形式和索引形式。链式分配链式分配是一种离散分配的方式,用于为文件分配非连续的磁盘块。它有......
  • 什么是Datacom认证? Datacom,即Datacom Communication的缩写,中文为“数据通信”,属于IC
    什么是Datacom认证?Datacom,即DatacomCommunication的缩写,中文为“数据通信”,属于ICT技术架构认证类别(华为认证包含ICT技术架构认证、平台与服务认证和行业ICT认证三类认证)。作为Routing&Switching认证的升级版,Datacom认证已于2020年4月18日正式发布,后续将替代Routing&Switc......
  • LabVIEW2023中文版labview中文版最新下载 各个版本下载
    NILabVIEW2020是一款专业的系统工程软件,用户界面友好,为用户提供了图形化编程方法,更好地进行可视化应用,如硬件配置、测量数据和调试等等方面。新版本简化了分布式测试、测量和控制系统的设计,引入了接口,且接口启用多种继承形式,大大提高用户的工作效率。软件地址:看置顶贴NILabVIEW......
  • Lumion12中文版下载 Lumion 12 Pro(3D渲染软件) 各个版本下载
    Lumion是一款让你可以将你的设计从平面图变成了立体的软件。它可以把你的设计变成一个3D模型,让你可以在里面随意走动,就像你在现实中一样。这个软件非常容易使用,它不需要你有很多的技术知识,只需要你会使用鼠标和键盘就可以了。软件地址:看置顶贴特点:Lumion软件是一款强大的3D可视化工......
  • 数控编程工具软件Mastercam中文版详细下载 各个版本下载
    MasterCAM2021是一款专业的数控加工软件,具有出色的功能和强大的性能。该软件能够为加工行业提供高效精准的加工解决方案。在加工过程中,MasterCAM2021提供了全面的支持,包括CAD设计、刀具路径生成、仿真等多个功能。这些功能使用户能够轻松完成各种复杂几何形状和工艺流程的加工任......
  • 解决不同浏览器下载文件名中文不能正常显示的问题
    if(request.getHeader("User-Agent").toUpperCase().indexOf("FIREFOX")>0){ fileName=newString(fileName.getBytes("UTF-8"),"ISO8859-1"); }elseif(request.getHeader("User-Agent").toUpperCase().......
  • Autocad Electrical 2020中文电气版64位下载 各个版本下载
    AutoCADElectrical2020官方版功能进行了全面升级和优化,比如增加了新的深色主题,可以让你的注意力更集中;增加了新的“经设计展开”图标;用户界面现在经过了优化,现在可以支持高分辨率显示器;而在已发布的PDF文档中,交互参考中现在提供了超链接等等,能够更好的为用户提供服务。软件地址:看......
  • Dynaform中文版下载-Dynaform中文版下载 各个版本下载
    dynaform包含三个主要模块:BSE、DFE和塑性。这些模块几乎涵盖了冲压模具表面设计的每一个元素,包括最佳冲压方向、毛坯设计、工艺补充表面设计、拉深筋设计、冲头和模具圆角。设计、冲压速度设置、压边力设计、摩擦系数、切向解、普雷斯顿数等。软件可用于各种领域,包括汽车、航空航......