JSP给页面带有俄文文本的问号

我正在实现JSP页面,从数据库中我得到一些列表并使用jquery-ui autocompletecombobox在JSP中显示它:

问题是当在浏览器中加载页面时,combobox中的值都是问号(预期的俄语字符)。

在同一个jsp文件中,我包含header.jsp,其中有以下行:

  

所以编码应该没问题。 源文件的编码也是UTF-8在jsp文件中还有一行:

  

我正在使用tomcat8和Java 7.我还尝试了另外一件事:将-Dfile.encoding = UTF-8添加到tomcat的启动参数中。

Servlet本身正在执行以下操作:

 public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { MkbDAO mkbDAO = new MkbDAO(); List mkbList = mkbDAO.getMKBList(); request.setAttribute("mkbList", mkbList); RequestDispatcher rd = getServletConfig().getServletContext().getRequestDispatcher("/WEB-INF/jsp/diagList.jsp"); rd.include(request, response); } 

我正在调试该servlet代码,并在调试器监视窗口中查看值,并且列表的值以正确的俄语字符显示。

你能帮忙解决这个问题吗?

也许这是Tomcat配置中的一个问题:请参阅Tomcat FAQ以获取可能的解决方案。

我用“charset = UTF-8”尝试了它,它给了我正确的字符串而不是???????? 我用“образец”测试了“样本”俄语字符串。

 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 

所以你可以试试“charset = UTF-8”,这将解决你的问题。

像这样的文字??? 表示您尝试将cp1251文本显示为UTF-8,因此请先检查db中的数据。
同样-Dfile.encoding = UTF-8是一个糟糕的解决方案,因为这种用法的不可预测的影响比HelloWorld.java更大。 尽量避免使用它。

尝试(它与你的有点不同)

 <%@ page contentType="text/html;charset=UTF-8"%> 

并在

中保存您的

 

放线

 response.setCharacterEncoding("UTF-8"); 

在你的doGet方法的开头