gpt4 book ai didi

java - 在 Servlet 的 JSP 页面中显示 UTF-8 文本

转载 作者:行者123 更新时间:2023-11-29 04:23:42 27 4
gpt4 key购买 nike

当我尝试通过 request.setAttribute() 在 JSP 上显示德语文本(例如 Zurücksetzen)时,它显示为 Zur�cksetzen

request.setAttribute("test", "Zurücksetzen");

我的 JSP 页面将 contentType 定义为 UTF-8:

<%@ page contentType="text/html;charset=UTF-8" %>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">

我只是用 ${test} 显示属性。


如果我将请求转发到 JSP 页面而不是包含 JSP,文本将正确显示

正向(工作):
request.getRequestDispatcher("/WEB-INF/views/index.jsp").forward(请求, 响应);

包括(不工作):
request.getRequestDispatcher("/WEB-INF/views/index.jsp").include(request, response);


我的 IDE 使用的是 UTF-8

enter image description here

最佳答案

回答我自己的问题:

JSP Globalization Support 中所述,默认如下

The default MIME type is text/html for traditional JSP pages; it is text/xml for JSP XML documents.

The default for the page source character encoding (for translation) is ISO-8859-1 (also known as Latin-1) for traditional JSP pages; it is UTF-8 or UTF-16 for JSP XML documents.

The default for the response character encoding is ISO-8859-1 for traditional JSP pages; it is UTF-8 or UTF-16 for JSP XML documents.

The determination of UTF-8 versus UTF-16 is according to "Autodetection of Character Encodings" in the XML specification, at the following location

所以 ServletJSP页面默认为 ISO-8859-1 .

request.getRequestDispatcher("/WEB-INF/views/index.jsp").include(request, response);
当你 .include 一个JSP页面,如上,页面使用默认字符编码(ISO-8859-1)进行编码。为了使用 UTF-8 编码,你必须设置 response.setCharacterEncoding("UTF-8");注意:JSP 中的 ContentType 指令被忽略。

request.getRequestDispatcher("/WEB-INF/views/index.jsp").forward(request, response);
当你 .forward 到一个 JSP 页面,如上所述,或者直接从浏览器访问一个 JSP 页面,该页面使用默认字符编码 (ISO-8859-1) 进行编码。为了使用 UTF-8 编码,您必须在 JSP 页面的第一行添加 <%@ page contentType="text/html; charset=UTF-8" %>

关于java - 在 Servlet 的 JSP 页面中显示 UTF-8 文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47574153/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com