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方法的开头