我写了一段很简单的程序来测试URLEncoder和URLDecoder的效果,在cmd中使用javac编译后运行的办法打印的结果与在IDEA中同样的代码运行的结果完全不同。
cmd已经通过chcp 65001命令将编码转换为UTF-8,保持与IDEA一致。
源码如下:
import java.net.URLEncoder;
import java.net.URLDecoder;
import java.nio.charset.StandardCharsets;
public class Test0402 {
public static void main(String[] args) {
String encoded = URLEncoder.encode("中文!", StandardCharsets.UTF_8);
System.out.println(encoded);
String decoded = URLDecoder.decode(encoded, StandardCharsets.UTF_8);
System.out.println(decoded);
}
}
在cmd中运行结果如下:
%C3%A4%C2%B8%C2%AD%C3%A6%E2%80%93%E2%80%A1%21
中文!
在IDEA中运行结果如下:
%E4%B8%AD%E6%96%87%21
中文!
cmd中编码得到的结果用在线编码转换工具转换后得到的是一个乱码,但是在这里打印的URLDecoder解码的结果不是乱码。
cmd打印的结果明显有误,但我不知道问题出在哪里。请问各位前辈该怎么解决这个情况?