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

时间:2014-03-21 07:13:15

标签: java jsp servlets encoding utf-8

我正在实现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代码,并在调试器监视窗口中查看值,并且列表的值以正确的俄语字符显示。

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

5 个答案:

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