gpt4 book ai didi

jsp - 字符编码 JSP - 在 JSP 中显示错误但在 URL 中不显示 : "á » á é » é"

转载 作者:行者123 更新时间:2023-11-28 21:44:56 25 4
gpt4 key购买 nike

我在 JBoss 应用程序服务器上运行的 JSP 中有这个 Web 应用程序。我正在使用 Servlets for friendly urls .我通过我的 JSP 和 Servlet 发送搜索参数。我正在使用带有文本框的表单,即 Servlet

第一个 Servlet 使用 request.getParameter()获取文本,并使用 response.sendRedirect 将其发送到另一个 Servlet (将 URL 屏蔽为“友好”的内容)。这个最终的 Servlet 使用 request.getRequestDispatcher().forward()以“丑陋”的方式将参数发送到 JSP:searchResults.jsp?searchParameters=Parameters .

现在,当显示“搜索结果”页面时,URL 会显示带有“友好 url”的正确搜索词。示例:http://site.com/search/My-Search-Query即使使用特殊字符,如:http://site.com/search/Busqué-tildes-y-eñies .但是,当我尝试在我的 JSP 中使用该搜索词时,特殊字符显示不正确。

整个系统使用 i18n,到目前为止我们没有遇到特殊字符的问题。但是当信息通过表单发送时(比如从 index.jsp 到 searchResults.jsp),特殊字符无法正确显示:

á - á
é - é
í - Ã
ó - ó
ú - ú
ñ - ñ

整个代码库应该是 UTF-8,但显然我在传递参数时遗漏了一些东西。正如我所说,它们正确显示在 URL 中,但不在 JSP 中。

我正在考虑转换那些 á手动,但我想有更好的方法可以使用正确的编码来正确地做到这一点。此外,以后可能会有我现在可能不知道的新字符(法语、西类牙语等)

以防万一,我会让你知道我在每个 JSP 上都有这些行:

<?xml version="1.0" encoding="UTF-8" ?>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

编辑

感谢您的回答。我尝试了一些方法,但没有解决问题。

这是我所做的:

  • 我添加了一个 ServletRequestListener,它将 session 的字符编码设置为 UTF-8,并为每个 Http 请求添加了一个过滤器,它的作用相同。

  • 正如我所说,JSP 中的所有内容都使用 UTF-8 编码(请参阅相关 header )。

  • 我将 Servlet 的字符编码打印到控制台,默认情况下为 null,将它们设置为 UTF-8,如 @kgiannakakis 和 @saua 所说。

这些操作都不能解决问题。我想知道这是否还有其他问题...

最佳答案

尝试在 {jboss.server}/deploy/jboss-web.deployer/server.xml 中设置 URIEncoding。

例如:

<Connector port="8080" address="${jboss.bind.address}"    
maxThreads="250" maxHttpHeaderSize="8192"
emptySessionPath="true" protocol="HTTP/1.1"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="UTF-8" />

关于jsp - 字符编码 JSP - 在 JSP 中显示错误但在 URL 中不显示 : "á » á é » é",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/374573/

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