gpt4 book ai didi

jsp - 与德语 "Umlaute"相关的 GET 和 POST 的不同行为

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

我在 Apache Tomcat 7.0.41 上使用 JSP,想将表单数据传输到另一个页面。

出于某些原因,如果我使用 GET,德语“Umlaute”会起作用,但如果我使用 POST,则不会。示例:

@€ --> @â¬

äöüß --> äöüÃ

Österreich --> Ãsterreich

所以我写了一个小脚本,它使用推荐的 encodeURIComponent()-JS-Function:

function onsubmitfu() {
tas = document.getElementsByTagName('textarea');
for (index = 0; index < tas.length; index++) {
tas[index].innerHTML = encodeURIComponent()(tas[index].innerHTML);
}
tas = document.getElementsByTagName('input');
for (index = 0; index < tas.length; index++) {
tas[index].value = encodeURIComponent(tas[index].value);
}
}

好吧,它“改变”了......

äöü߀ --> äöüÃâ¬

Internet 上的一些资源更喜欢 escape() 所以我试了一下,它按照预期的方式工作,但在错误的一面......现在 JSP-Page 收到:

äöü߀ --> %E4%F6%FC%DF%u20AC

我猜这看起来应该是 URL 中的样子......

两个页面都使用

<%@page contentType="text/html" pageEncoding="UTF-8"%>

但我不明白为什么这两种变体的行为存在差异。有解决方法吗?

最佳答案

您的 Tomcat 服务器是否设置为处理 UTF8 字符?这就是我在 Ubuntu 12.04 上的 Tomcat 6 中的做法。这应该让您了解如何处理。

首先,我像这样打开主 Tomcat 服务器 XML 文件:

sudo nano /etc/tomcat6/server.xml

然后我寻找 <Connector部分并确保它包含 URIEncoding="UTF-8" .默认情况下看起来像这样:

<Connector port="8080" protocol="HTTP/1.1" 
connectionTimeout="20000"
redirectPort="8443" />

但是当您添加 URIEncoding="UTF-8" 时应该看起来像这样对它:

<Connector port="8080" protocol="HTTP/1.1" 
connectionTimeout="20000"
URIEncoding="UTF-8"
redirectPort="8443" />

然后像这样重启 Tomcat 6:

sudo service tomcat6 restart.

然后看看会发生什么。此外,请参阅 this question and answer thread 中的建议.这个程序化的答案似乎解决了这个问题:

if(request.getCharacterEncoding() == null) {
request.setCharacterEncoding("UTF-8");
}

关于jsp - 与德语 "Umlaute"相关的 GET 和 POST 的不同行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23448560/

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