gpt4 book ai didi

java - Servlet 无法获取具有正确内容类型的字符串

转载 作者:行者123 更新时间:2023-12-02 07:03:19 25 4
gpt4 key购买 nike

我的简单问题是为什么我不能通过这样的网址传递具有不同字符编码的非英语参数:

http://my-project-name:8080/something?word=علی

但是我可以使用带有 post 方法的表单发送参数,但我不想这样做&我想弄清楚为什么我不能使用 get 方法来做到这一点!

这是我的配置:

在我的 web.xml 中,我有:

    <filter>
<filter-name>EncodingFilter</filter-name>
<filter-class>sys.system.EncodingFilter</filter-class>
<init-param>
<param-name>encodings</param-name>
<param-value>US-ASCII, UTF-8, EUC-KR, ISO-8859-15, ISO-8859-1</param-value>
</init-param>
<init-param>
<param-name>inputEncodingParameterName</param-name>
<param-value>ie</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>EncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

这是我的 servlet:

public class EncodingFilter implements Filter {

@Override
public void destroy() {

}

@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
if (request.getCharacterEncoding() == null) {
request.setCharacterEncoding("UTF-8");
}
if (response.getCharacterEncoding() == null) {
response.setCharacterEncoding("UTF-8");
}
chain.doFilter(request, response);
}

@Override
public void init(FilterConfig arg0) throws ServletException {
}
}

我的jsp header 已正确设置:

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> ...

当我想在 Controller 中获取参数词时,我有一个字符编码,这是我的 Controller :

@RequestMapping(value = "something")
public String stopJob(@RequestParam("word") String word) {
... do something
}

有趣的是,即使当我打印时,一切都设置正确

request.getCharacterEncoding();

它向我返回“UTF-8”,但“单词”不正确并且已损坏。这里有人知道这个问题吗?谢谢 !

最佳答案

您是否在 Tomcat 中设置了 URIEncoding,请参阅 tomcat uriencoding另请参阅此Can not send special characters (UTF-8) from JSP to Servlet: question marks displayed

关于java - Servlet 无法获取具有正确内容类型的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16381959/

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