微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 getPageContext().getRequest().getParameterValues() 时如何防止 unicode 字符损坏?

如何解决使用 getPageContext().getRequest().getParameterValues() 时如何防止 unicode 字符损坏?

我们有一个场景,一个页面提交多个同名字段。为了解决 CF 的方法,将它们放入逗号分隔的字符串中,而不在应用程序范围内更改,我们使用 getPageContext().getRequest().getParameterValues("#fieldname#") 将某些位置的字段值作为数组访问。

我们遇到的问题是提交的 unicode 字符已损坏。例如,字段数组中的 El celular que compré está averiado 作为字符串 El celular que compré está averiado 返回。如果我转储 getHTTPRequestData(),我可以看到正确编码的 El+celular+que+compr%C3%A9+est%C3%A1+averiado url 被发送到服务器。

Java 字符串是否没有被 CF 正确处理?无论如何要在非应用程序范围的基础上解决这个问题,而不是解析我们真的不想做的 getHTTPRequestData().content

解决方法

原因是你的网络服务器没有在内部使用 utf-8 来编码参数。在通过 url 范围访问变量时,您通常不会看到这一点,因为 CF 已经为您转换了它们,但是在查看 cgi.query_string 或 {{1} 时您可以看到这种差异}

就您而言,您看到的是 getPageContext().getRequest().getParameterValues(...) 编码。我在 IIS7.5 - IIS8 周围有类似的问题。假设您不能或不想冒险尝试更改您的网络服务器配置,此解决方法应该适合您:

windows-1252

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。