【问题标题】:Reading request parameter values with UTF-8 chars in JSF在 JSF 中使用 UTF-8 字符读取请求参数值
【发布时间】:2011-09-19 15:20:22
【问题描述】:

我在从包含特殊字符的 GET 请求中读取请求参数时遇到问题。这是我的工作:

我用javascript创建请求url,drivername的值为encodeURIComponent('sorumluluğumuzu') 结果是这个 URL,它在 Firefox 中正确显示: http://localhost:8080/driver/list.xhtml?sl=1&drivername=sorumlulu%C4%9Fumuzu

但是,当我在我的 JSF bean 中读取请求参数时: FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap()

值等于 sorumluluÄumuzu

我在 JSF2 中遇到了这个 om Tomcat7,但我们在 Websphere6 和 JSF1.2 上发现了同样的问题。

有什么想法吗?

【问题讨论】:

  • 有趣的是,stackoverflow 在 UTF8 字符上也是错误的...如果您检查链接,%C4%9F 与我帖子中进一步显示的 Ä 字符不同... :D

标签: jsf utf-8 parameters request


【解决方案1】:

Tomcat 默认使用 ISO-8859-1 对 GET 请求参数进行 URL 解码。您需要通过Tomcat的/conf/server.xml<Connector>元素中的URIEncoding属性将其更改为UTF-8。

<Connector ... URIEncoding="UTF-8">

另见:

【讨论】:

  • 我确实设法让它在具有该属性的 Tomcat 中工作。不幸的是,我仍然在使用 websphere 的树林中。到目前为止,谷歌没有运气,我会继续寻找,但当然欢迎提出建议;)
  • Websphere 在幕后使用 Tomcat。在 Websphere 安装文件夹中查找名为 server.xml 的文件。您会认识很多 Tomcat 文档。或者,试试这个答案中的过滤器:stackoverflow.com/questions/2657515/…
  • 据我所知,我相信 Tomcat 仅用于 WebSphere CE,而我正在寻找 Websphere AS7 上的解决方案。到目前为止 server.xml 上没有运气:(
  • 哦,这对我来说是新的(不可否认,我上次使用 WAS 时,它仍然是 WAS 5.x)。好吧,我有点googledfirstthird 命中让我相信设置-Dclient.encoding.override=UTF-8 VM 参数是你的解决方案。
  • 不敢说这个设置已经到位了,显然没有多大帮助。我们还在 encoding.properties 文件中将 UTF-8 设置为每种西方语言,同样没有正面结果:(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-24
  • 1970-01-01
相关资源
最近更新 更多