摘要: 今日无意中发现在中文系统使用良好的中文页面在移植到英文系统后出现了乱码,多方查找发现,出现乱码的页面是使用的jstl标签的c:url和c:param标签生成的URL通过c:import嵌入网页的,所以怀疑可能是c:param在进行Base64编码是使用的编码有问题。通过查找JSTL的源码发现在org.apache.taglibs.standard.tag.common.core.ParamSupport类即c:param的实现类中有这样一行代码:
parent.addParameter(URLEncoder.encode(name), URLEncoder.encode(value))
其中URLEncoder.encode是问题所在。
阅读全文