我有一个 Web 应用程序(嗯,实际上只是一个 servlet),它接收来自 3 个不同来源的数据:
- 源 A 是用 UTF-8 编写的 HTML 文档,并通过
<form method="get">
. - 源 B 是用 ISO-8859-1 编写的,并且
<form method="get">
也通过 发送数据。 - 源 C 用 ISO-8859-1 编写,并通过
<a href="http://my-servlet-url?param=value¶m2=value2&etc">
.
servlet 接收请求参数并使用 UTF-8 对它们进行 URL 解码。正如您所料,A 可以正常工作,而 B 和 C 则失败(您无法在 UTF-8 中对以 ISO-8859-1 编码的内容进行 URL 解码......)。
我可以对 B 和 C 稍作修改,但我不能将它们从 ISO-8859-1 更改为 UTF-8,这样可以解决所有问题。
在 B 中,我已经能够通过accept-charset="UTF-8"
添加<form>
. 因此,即使页面是 ISO,它也会以 UTF-8 格式发送数据。
我能做些什么来修复C?
或者,有没有办法确定 servlet 上的字符集,所以我可以在每种情况下使用正确的编码调用 URL-decode?
编辑:我刚刚找到了这个,这似乎解决了我的问题。我仍然需要进行一些测试以确定它是否会影响性能,但我认为我会坚持使用该解决方案。