在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解码出来就没有问题了。
url后参数的转码与解码
import java.net.URLDecoder;
import java.net.URLEncoder;
String strTest = "?=abc?中%1&2<3,4>";
strTest = URLEncoder.encode(strTest, "UTF-8");
System.out.println(strTest);
strTest = URLDecoder.decode(strTest,"UTF-8");
System.out.println(strTest);
执行结果:
%3F%3Dabc%3F%E4%B8%AD%251%262%3C3%2C4%3E
?=abc?中%1&2<3,4>
本文探讨了在Java中处理特殊字符的URL编码与解码过程中可能出现的问题,并提供了一种解决方案,即通过将特殊字符转换为十六进制值来确保编码和解码的准确性。
2343

被折叠的 条评论
为什么被折叠?



