如何从JSP页面正确解释Umlaute的参数

Kaa*_*zia 2 string jsp utf-8 diacritics character-encoding

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

处理输入对非Umlaute工作正常.但是,只要在输入字段中输入变音符号,就会传递不正确的值.

例如:

  • 如果在输入字段中输入"ä"(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>
Run Code Online (Sandbox Code Playgroud)

该值从args中检索并转换为字符串:

UUID pk = UUID.fromString(args.get("pk")); //$NON-NLS-1$
String value = args.get(pk.toString());
Run Code Online (Sandbox Code Playgroud)

注意:保存在数据库中的元音可以在页面上正确显示.

Bal*_*usC 5

注意:保存在数据库中的元音可以在页面上正确显示.

由于这个事实,我假设你已经通过<%@page pageEncoding="UTF-8"%>JSP或<jsp-config>in中正确地将响应编码设置为UTF-8 web.xml.

留下请求编码.如果你使用GET或POST,你的问题和代码都不清楚.如果您正在使用POST,那么您需要创建一个显式设置HTTP请求主体编码的servlet过滤器:

request.setCharacterEncoding("UTF-8");
Run Code Online (Sandbox Code Playgroud)

或者,如果您正在使用GET,那么您需要深入了解服务器配置以将URI /参数编码设置为UTF-8.如何做到这一点取决于使用的服务器,问题也不清楚,更不用说你的问题历史了.因此,我只举一个Tomcat的例子:在Tomcat中设置元素的URIEncoding属性:<Connector>/conf/server.xml

<Connector ... URIEncoding="UTF-8">
Run Code Online (Sandbox Code Playgroud)

也可以看看: