在Java中,我们会经常对一些中文字符进行URL编码,这样的就可以在数据传递中解决中文乱码的现象。
但是在对于一些特殊字符的URLEncoder编码后 在通过URLDecoder解码处理会出现丢失,乱码的现象。
造成这样现象的原因主要是:URL编码没有对其进行转码。
其解决的办法是:十六进制值
| | 以下8个特殊字符URL编码没有对其进行转码 | 十六进制值 |
1. | + | URL 中+号表示空格 | %2B |
2. | 空格 | URL中的空格可以用+号或者编码 | %20 |
3. | / | 分隔目录和子目录 | %2F |
4. | ? | 分隔实际的 URL 和参数 | %3F |
5. | % | 指定特殊字符 | %25 |
6. | # | 表示书签 | %23 |
7. | & | URL 中指定的参数间的分隔符 | %26 |
8. | = | URL 中指定参数的值 | %3D |
把特殊字符进行十六进制转换,然后进行URLEncoder编码,最后URLDecoder解码出来就没有问题了。