ASCII(American Standard Code for Information Interchange 美国信息交换标准代码),由128个字符构成,是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语,其对应的国际标准为 ISO/IEC 646。
一个字节是8位,所以一个字节最多可以表示256个不同的字符,初期ASCII没有使用到第一位,可以表示128个字符,后面EASCII扩展为使用8位,表示256个字符。

Unicode(The Unicode Standard)译作万国码、统一字元码、统一字符编码,是信息技术领域的业界标准,其整理、编码了世界上大部分的文字系统,使得电脑能以统一字符集来处理和显示文字,不但减轻在不同编码系统间切换和转换的困扰,更提供了一种跨平台的乱码问题解决方案。
Unicode占用2-3个字节,基本可以表示全世界的字符

UTF-8(8-bit Unicode Transformation Format)是Unicode的一种实现,为什么需要它呢,Unicode可以用2-3个字节表示,但是没有规定存储的方式,比如字母在ASCII中只需要一个字节,但是Unicode用几个字节存储是个问题,所以出现了多种存储方式。ASCII没有存储方式的问题,因为它只用到了一个字节,用一个字节存储就可以了。UTF-8 最大的特点是一种可变长的编码方式,其使用1~4个字节表示一个符号,根据不同的符号而变化字节长度

URLEncode
http请求的url是按ASCII格式编码的,所以如果url有中文等ASCII表示不了的字符,就需要进行转码
浏览器会自动进行URLEncode编码
Java使用RestTemplate发送请求时,会自动进行URLEncode