urlEncoder和urlDecoder的作用和使用

URLEncoder到底是干什么用的??

都说是对form表单里的请求编码解码用的,但是为什么在写中文文件下载的时候也用到了。
就是说国际通用的编码对中文支持不好,所以需要对着玩意进行转换。
因为中文读取的时候你不给一个编码,它可能就用别的编码(不一定适合中文)就会导致乱码,所以就要写明编码了。
HTML 格式编码的实用工具类。该类包含了将 String 转换为 application/x-www-form-urlencoded MIME 格式的静态方法 一般是对中文编码用的,比如get方式提交表单,如果有中文,常需要用该类对其编码。 地址栏中,常能看到像“乱码”的东东,有些就是该类对中文编码后的结果

URLEncoder的作用

URLEncoder是什么

是HTML 格式编码的实用工具类。该类包含了将 String 转换为 application/x-www-form-urlencoded MIME 格式的静态方法。
对 String 编码时,使用以下规则:

  • 字母数字字符 “a” 到 “z”、“A” 到 “Z” 和 “0” 到 “9” 保持不变。
  • 特殊字符 “.”、"-"、"*" 和 "_"保持不变。
  • 空格字符 " " 转换为一个加号 “+”。
  • 所有其他字符都是不安全的,因此首先使用一些编码机制将它们转换为一个或多个字节。然后每个字节用一个包含 3 个字符的字符串 "%xy"表示,其中 xy 为该字节的两位十六进制表示形式。推荐的编码机制是 UTF-8。

为什么需要URLEncoder

在URI的最初设计时,希望能通过书面转录,因此URI的构成字符必须是可写的ASCII字符。在这些可书写的字符里,由于一些字符在不同操作系统的编码有不同的解析,被包含在“不安全字符”之中,要格外注意。

那哪些字符是需要转化的呢?

  1. ASCII 的控制字符
    这些字符都是不可打印的,自然需要进行转化。
  2. 一些非ASCII字符
    这些字符自然是非法的字符范围。转化也是理所当然的了。
  3. 一些保留字符
    很明显最常见的就是“&”了,这个如果出现在url中了,那你认为是url中的一个字符呢,还是特殊的参数分割用的呢?
  4. 就是一些不安全的字符了。
    例如:空格。为了防止引起歧义,需要被转化为“+”。
    url转义其实也只是为了符合url的规范。因此,URLEncoder只是为了url中一些非ascii字符,可以正确无误的被传输。

URLEncoder怎么使用

//使用指定的编码机制将字符串转换为 application/x-www-form-urlencoded 格式。此方法提供了获取不安全字节字符的编码方案。
public static String encode(String s, String enc) throws UnsupportedEncodingException

urlEncoder和urlDecoder的作用和使用

1.URLEncoder.encode(String s, String enc)
使用指定的编码机制将字符串转换为 application/x-www-form-urlencoded 格式

URLDecoder.decode(String s, String enc)
使用指定的编码机制对 application/x-www-form-urlencoded 字符串解码。

2.发送的时候使用URLEncoder.encode编码,接收的时候使用URLDecoder.decode解码,都按指定的编码格式进行编码、解码,可以保证不会出现乱码

3.主要用来http get请求不能传输中文参数问题。http请求是不接受中文参数的。

这就需要发送方,将中文参数encode,接收方将参数decode,这样接收方就能收到准确的原始字符串了。

如:

String testString = "abcdefghijk";try{String encoderString = URLEncoder.encode(testString, "utf-8");System.out.println(encoderString);String decodedString = URLDecoder.decode(encoderString, "utf-8");System.out.println(decodedString);} catch (UnsupportedEncodingException e){// TODO Auto-generated catch blocke.printStackTrace();}输出:
abcdefghijk%E6%BD%98%E5%AD%A6%E5%86%9B
abcdefghijk

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/555779.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux网络文件系统包括,Linux文件系统

在Linux系统中,所有的目录和文件数据都是以一个树形的结构进行存储,整个系统中只存在一个根目录,所有的分区、目录、文件都在同一个根目录下面。“/”下面的第一层目录包括:/bin;/boot;/dev;/et…

Java:URLEncoder、URLDecoder、Base64编码与解码

1. URL 主要用来http get请求url不能传输中文参数问题。http请求是不接受中文参数的 1.1 URLEncoder编码 使用指定的编码机制将字符串转换为 application/x-www-form-urlencoded 格式 对String编码时,使用以下规则: 字母数字字符 “a” 到 “z”、“…

iperf测试带宽linux,iperf3-网络带宽性能测试工具

作用:基于TCP或UDP,对网络带宽吞吐量进行测试安装:yum install iperf3 -y服务端参数:-s:表示启动服务端-i:表示打印报告的时间间隔-p:指定监听端口,默认为5201-D:以后台方…

解决Springboot get请求是参数过长的情况

解决Springboot get请求是参数过长的情况 问题原因 Springboot get请求是参数过长抛出异常:Request header is too large 的问题 错误描述 java.lang.IllegalArgumentException: Request header is too large 解决方案 请求头超过了tomcat的限值。本来post请求…

用get方式提交请求的url带有中文参数

又碰到JSP页面中文乱码问题,经过一次encodeURI处理后仍旧是乱码,后来经过两次encodeURI后正常显示中文 以前也碰到过同样的问题,没深究,这次网上搜集了一些资料,记录下来留做备份 前端JS: var name“中文…

异常:Get请求提交过来的中文参数乱码

一、产生环境 spring boot项目的controller接收Get请求提交的中文参数发生乱码 二、异常情况 中文乱码 三、产生原因 因为内置了tomcat,即使我们在application.yml文件里配置了tomcat的编码格式,但是当我们打包成war包部署到生产服的时候用的却是服…

c语言打印字符的函数参数,C语言格式化打印函数vsnprintf()的实现

Linux内核的格式化打印函数是printk(),它与printf()函数是类似的,都是根据格式字符串把可变参数列表转化成字符序列,然后输出到控制台。printf()是打印到标准输出stdout。printk()是打印到控制台终端。在使用串口线连接嵌入式硬件时&#xff…

使用SpringMVC参数传递时,解决get请求时中文乱码的问题

问题描述: 使用SpringMVC参数传递时, 遇到get请求中文信息时,页面应答会显示中文乱码. 解决办法: 一, 我们需要把request.getParameter(“参数名”)获取到的字符串先用ISO-8859-1编码成字节流,然后再将其用utf-8解码成字符流,代码如下: String str new String(…

二级c语言笔试58,全国计算机等级考试-二级C语言笔试试题.doc

全国计算机等级考试-二级C语言笔试试题2002年4月全国计算机等级考试二级C语言笔试真题试题(含参考答案)一、选择题(1)—(40)题每小题1分,(41)—(50)题每小题2分,共计60分。下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的&#x…

get请求URL传中文参数后台接收乱码的解决之道

现在需求是在浏览器里面直接发请求,浏览器发请求,默认发的是get请求,然后带参数,参数包含中文汉字。麻烦就在这里,参数里面的汉字,在后台接收的时候,是乱码。 这么简单的传递参数的方式&#xf…

c语言 dec2oct函数,【Excel函数】DEC2OCT函数 - 曹海峰个人博客

本文介绍Microsoft Excel中DEC2OCT函数的语法和用法。DEC2OCT函数适用于:Excel2003、Excel2007、Excel2010、Excel2013、Excel2016。函数说明DEC2OCT函数的主要作用是将十进制数转换为八进制数。如果该函数不可用,并返回错误值 #NAME?,请安装…

如何解决springboot参数传中文乱码

如何解决springboot参数传中文乱码 前言 本文案例来自业务部门的一个业务场景。他们的业务场景是他们部门研发了一个微服务上下文透传组件,其透传原理也挺简单的,就是通过springboot拦截器把请求参数塞进threadlocal,然后下游通过threadloc…

在c语言中预处理命令行都以井号开头,以井号开头的行和gcc预处理器输出中的'#1“ac”'之类的数字是什么意思?...

以井号开头的行和gcc预处理器输出中的#1“ac”之类的数字是什么意思?我使用打印出C预处理器的输出gcc -E a.c输出包含许多行# 1 "a.c"# 1 ""# 1 ""# 1 "a.c"# 1 "c:\\mingw\\bin\\../lib/gcc/mingw32/4.5.…

springboot接收get和post请求参数

一、get请求前端传参和后台接收的写法: 1、ajax请求: $.ajax({ url:/user/login3,//contentType: application/json;charsetutf-8, //这一句添加与否,效果都一样data:{"userName":"张三", "userPas…

android原生调用nextjs方法,详解使用Next.js构建服务端渲染应用

next.js简介最近在学React.js,React官方推荐使用next.js框架作为构建服务端渲染的网站,所以今天来研究一下next.js的使用。next.js作为一款轻量级的应用框架,主要用于构建静态网站和后端渲染网站。框架特点使用后端渲染自动进行代码分割(code…

SpringBoot2基础-请求参数处理和原理

SpringBoot2基础-请求参数处理和原理 tags: Spring Boot2021尚硅谷雷丰阳 categories: 静态文件配置静态文件配置原理欢迎页和自定义 FaviconRest表单请求原理请求映射原理各种参数使用和原理 文章目录SpringBoot2基础-请求参数处理和原理第一节 [SpringMVC](https://so.cs…

android开机后自动执行shell,init.rc启动 shell脚本

[Android] 在開機的時候,執行你想要的 shell script雖然 init.rc 很好用,但還是有其缺陷... 像是我要 echo 某些字串到檔案時,他就做不到了 :(所以可以搭配一個 .sh 的檔案,讓他開機的時候去執行這個 .sh 即可。建議修改方式&…

Spring MVC 执行过程原理(请求映射原理、参数处理原理、返回值处理器)

Spring MVC 执行过程分析 文章目录Spring MVC 执行过程分析请求映射原理适配器Adapter执行目标方法参数处理器解析器HandlerMethodArgumentResolverRequestBody测试RequestParam测试RequestParamMethodArgumentResolver分析执行目标方法体返回值处理器解析器目标方法执行完成处…

推箱子android源代码,android自定义view实现推箱子小游戏

本文实例为大家分享了android推箱子游戏的具体实现代码,供大家参考,具体内容如下自定义view:package com.jisai.materialdesigndemo.tuixiangzhi;import android.content.Context;import android.graphics.Bitmap;import android.graphics.Bi…

android没有捂脸表情,微信新emoji表情安卓机怎么没有?微信新emoji表情安卓机没有怎么回事?...

在最新版ios版微信中不少用户在聊天时发现了新emoji表情哟,但是安卓机最新版即没有发现,那么微信新emoji表情安卓机怎么没有?微信新emoji表情安卓机没有怎么回事?下面小编就给大家具体介绍下。iOS版微信总共加入了9款新表情&#…