我正在实现 JSP 页面,我从数据库中获取一些列表并使用 jquery-ui 自动完成组合框在 JSP 中显示它:
<div class="ui-widget">
<label>Select MKB from list: </label>
<select id="combobox">
<option value=""></option>
<c:forEach var="mkb" items="${mkbList}">
<option value="${mkb.id}"><c:out value="${mkb.mkbText}"/></option>
</c:forEach>
</select>
</div>
问题是,在浏览器中加载页面时,组合框中的值全部为问号(应为俄语字符)。
在同一个 jsp 文件中,我包含 header.jsp,其中包含以下行:
<%@page contentType="text/html; UTF-8" pageEncoding="UTF-8"%>
所以编码应该没问题。源文件的编码也是UTF-8
在jsp文件中还有一行:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
我使用的是tomcat8和Java 7。
我尝试过的另一件事是添加:
-Dfile.encoding=UTF-8 为tomcat的启动参数。
Servlet 本身正在执行以下操作:
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
MkbDAO mkbDAO = new MkbDAO();
List<MKB> mkbList = mkbDAO.getMKBList();
request.setAttribute("mkbList", mkbList);
RequestDispatcher rd = getServletConfig().getServletContext().getRequestDispatcher("/WEB-INF/jsp/diagList.jsp");
rd.include(request, response);
}
我正在调试该 servlet 代码,并查看了调试器监视窗口中的值,列表的值以正确的俄语字符显示。
你能帮忙解决这个问题吗?