我正在实现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代码,并在调试器监视窗口中查看值,并且列表的值以正确的俄语字符显示。
你能帮忙解决这个问题吗?
答案 0 :(得分:1)
也许这是Tomcat配置中的一个问题:请参阅Tomcat FAQ了解可能的解决方案。
答案 1 :(得分:0)
我用“charset = UTF-8”试过它,它给了我正确的字符串而不是????????我用“образец”测试了“样本”俄语字符串。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
所以你可以尝试使用“charset = UTF-8”来解决你的问题。
答案 2 :(得分:-1)
这样的文字???表示您尝试将cp1251文本显示为UTF-8,因此请先检查db中的数据。
另外-Dfile.encoding = UTF-8是一个糟糕的解决方案,因为这种用法的不可预测的影响比HelloWorld.java更大。尽量避免使用它。
答案 3 :(得分:-1)
尝试(它与你的有点不同)
<%@ page contentType="text/html;charset=UTF-8"%>
包含<form>
<select>
<form accept-charset="UTF-8" ....>
答案 4 :(得分:-1)
放线
response.setCharacterEncoding("UTF-8");
在 doGet 方法的开头