我刚刚将我们的一个核心应用程序从 Windows+IIS+Coldfusion 移到了 Ubuntu+Apache+Lucee。第一个大问题是外来字母的 URI 编码。
例如,尝试访问此 urlhttp://www.example.com/ru/Солнцезащитные-очки/saint-laurent/
会导致 Apache access.log 中出现此记录:
http://www.example.com/ru/%D0%A1%D0%BE%D0%BB%D0%BD%D1%86%D0%B5%D0%B7%D0%B0%D1%89%D0%B8%D1%82%D0%BD%D1%8B%D0%B5-%D0%BE%D1%87%D0%BA%D0%B8/saint-laurent/
好吧,我认为这是正确的 url 编码。然后我在 .htaccess 文件中使用重写规则在 url 查询字符串参数(比如说“foo”)中获取 url 的那部分(西里尔字母)。
使用 cflog 转储它,我在应用程序日志中看到:
/index.cfm?foo=оÑки-длÑ-зÑениÑ&
...这显然是错误的,因为我需要的是原始字符串,采用 utf-8 西里尔字母。
我试图将 URIEncoding 参数放在我的 server.xml tomcat http 连接器中,但没有结果:
<Connector port="8888" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="UTF-8" />
如何在 UTF-8 中获取我的 url 参数?