假设我有:
<a href="http://www.yahoo.com/" target="_yahoo"
title="Yahoo!™" onclick="return gateway(this);">Yahoo!</a>
<script type="text/javascript">
function gateway(lnk) {
window.open(SERVLET +
'?external_link=' + encodeURIComponent(lnk.href) +
'&external_target=' + encodeURIComponent(lnk.target) +
'&external_title=' + encodeURIComponent(lnk.title));
return false;
}
</script>
Run Code Online (Sandbox Code Playgroud)
我已经确认external_title将编码Yahoo!%E2%84%A2并传递给SERVLET.如果SERVLET我在做:
Writer writer = response.getWriter();
writer.write(request.getParameter("external_title"));
Run Code Online (Sandbox Code Playgroud)
我在浏览器中获得了Yahoo!¢.如果我手动将浏览器字符编码切换为UTF-8,它将更改为Yahoo! TM(这就是我想要的).
所以我认为我发送到浏览器的编码是错误的(确实如此Content-type: text/html; charset=ISO-8859-1).我改为SERVLET:
response.setContentType("text/html; charset=utf-8");
Writer writer = response.getWriter();
writer.write(request.getParameter("external_title"));
Run Code Online (Sandbox Code Playgroud)
现在浏览器字符编码是UTF-8,但它输出Yahoo!但我无法让浏览器呈现正确的字符.
我的问题是:是否存在某些组合Content-type和/或new String(request.getParameter("external_title").getBytes(), "UTF-8");和/或其他会导致Yahoo! TM出现在SERVLET输出中?
我在JSP页面中有这样一个链接,编码为big5 http:// hello/world?name =婀ㄉ 当我在浏览器的URL栏中输入它时,它将被改为 http:// hello/world?name = %23%24%23 当我们想在jsp页面中获取此参数时,所有字符都已损坏.
我们设置了这个:request.setCharacterEncoding("UTF-8"),因此所有请求都将转换为UTF8.
但为什么在这种情况下,它不起作用?提前致谢!.