2

我们有一个 servlet 程序,它使用 servlet 程序中的 HTML 代码,即

HTML.append("<html>");
HTML.append(lnTag);
HTML.append("<head>");
HTML.append(lnTag);
HTML.append("<meta http-equiv='Content-Type' content='text/html; charset=utf-8'>");
String titalsLang = resourceBundle.getString("eayslip.tan.title");  
HTML.append("<title>"+resourceBundle.getString("eayslip.tan.title")+"</title>");</i>

// and list of codes... 

out.print(HTML);
response.setContentType("text/html; charset=UTF-8");
response.setHeader("Pragma", "no-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);

我在调试代码时从属性文件中获取汉字。但是一旦响应发送到页面,在 html 页面中我们会得到问号?????。

我们对英文字符没有任何问题,并且它们显示正确。

4

1 回答 1

1

我怀疑问题是您在调用之后HttpServletResponse.getWriter()设置内容类型(包括编码) ,假设这是out从哪里来的。

从以下文档ServletResponse.setContentType

如果在响应提交后调用此方法无效。如果在调用 getWriter 之后或在提交响应之后调用它,它不会设置响应的字符编码。

基本上,您应该在调用之前设置响应中的所有标头getWriter......如果您正在调用getOutputStream而不是getWriter,则不应该......对文本数据使用编写器,对二进制数据使用流。

于 2015-09-11T06:11:23.860 回答