gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 08:01:29 24 4
gpt4 key购买 nike

我们有一个场景,页面提交多个同名字段。为了解决 CF 的默认方法将它们放入逗号分隔的字符串中,而不在应用程序范围内更改,我们使用 getPageContext().getRequest().getParameterValues("#fieldname#") 将某些位置的字段值作为数组访问。 .
我们遇到的问题是提交的 unicode 字符已损坏。例如 El celular que compré está averiado在字段数组中返回字符串 El celular que compré está averiado .如果我转储 getHTTPRequestData()我可以看到正确编码的 url El+celular+que+compr%C3%A9+est%C3%A1+averiado发送到服务器。
CF 没有正确处理 java 字符串吗?无论如何要在非应用程序范围的基础上解决此问题,而不是解析 getHTTPRequestData().content我们真的不想做什么?

最佳答案

原因是你的网络服务器没有在内部使用 utf-8 来编码参数。当通过 url 访问变量时,您通常不会看到这一点。范围,因为 CF 已经为您转换了它们,但是您可以在查看 cgi.query_string 时看到这种差异。或在 getPageContext().getRequest().getParameterValues(...)在您的情况下,您似乎看到了 windows-1252编码。我在 IIS7.5 - IIS8 周围有类似的问题。假设您不能或不想冒险尝试更改您的网络服务器配置,此解决方法应该适合您:

webserverEncodedString = getPageContext().getRequest().getParameterValues(fieldname);
binaryValue = CharsetDecode(webserverEncodedString, "windows-1252");
utf8EncodedString = CharsetEncode(binaryValue, "utf-8");

关于coldfusion - 使用 getPageContext().getRequest().getParameterValues() 时如何防止 unicode 字符损坏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66446466/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com