String 如何从JSP页面使用Umlaute正确解释参数

String 如何从JSP页面使用Umlaute正确解释参数,string,jsp,utf-8,character-encoding,diacritics,String,Jsp,Utf 8,Character Encoding,Diacritics,我从JSP页面上的文本输入字段获取输入,该字段可以包含Umlaute。(如Ä,Ö,Ü,ä,ö,ü,ß) 对于非Umlaute,处理输入效果很好。但只要在输入字段中输入Umlaut,就会传递一个不正确的值 例如: 如果在输入字段中输入一个“ä”(UTF-8:U+00E4) 从参数中提取的字符串是“Õ”(UTF-8:U+00C3和U+00A4) 在我看来,似乎UTF-8十六进制编码(c3 a4表示“ä”)用于转换 如何检索正确的值? 以下是当前实现的片段: JSP页面将输入值“pk”传递给

我从JSP页面上的文本输入字段获取输入,该字段可以包含Umlaute。(如Ä,Ö,Ü,ä,ö,ü,ß)

对于非Umlaute,处理输入效果很好。但只要在输入字段中输入Umlaut,就会传递一个不正确的值

例如:

  • 如果在输入字段中输入一个“ä”(UTF-8:U+00E4)
  • 从参数中提取的字符串是“Õ”(UTF-8:U+00C3和U+00A4)
在我看来,似乎UTF-8十六进制编码(c3 a4表示“ä”)用于转换

如何检索正确的值?


以下是当前实现的片段:

JSP页面将输入值“pk”传递给处理逻辑:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
...
<input type="text" name="<%=pk.toString()%>" value="<%=value%>" size="70"/>
<button type="submit" title="Edit" value='Save' onclick="action.value='doSave';pk.value='<%=pk.toString()%>'"><img src="icons/run.png"/>Save</button>
注意:保存在数据库中的Umlaute将正确显示在页面上

注意:保存在数据库中的Umlaute将正确显示在页面上

由于这个事实,我假设您已经通过JSP中的
中的
将响应编码正确地设置为UTF-8

留下了请求编码。如果使用GET或POST,您的问题和代码都不清楚。如果使用POST,则需要创建一个显式设置HTTP请求正文编码的:

request.setCharacterEncoding("UTF-8");
或者,如果您使用的是GET,则需要深入服务器配置,将URI/参数编码设置为UTF-8。如何做到这一点取决于所使用的服务器,从问题中也不清楚,更不用说从您的问题历史记录中了。因此,我将给出一个Tomcat的示例:在Tomcat的
/conf/server.xml
中设置
元素的
URIEncoding
属性:


另见:

谢谢BalusC,我们正在使用post,请求中的编码设置确实是缺少的。
request.setCharacterEncoding("UTF-8");