【问题标题】:Percent-escapes in URL converted to latin charset on IIS 8.5URL 中的百分比转义在 IIS 8.5 上转换为拉丁字符集
【发布时间】:2014-05-07 14:58:18
【问题描述】:

迁移到新的 Windows IIS 8.5 服务器后,请求不会作为 UTF-8 字符而是单字节拉丁字符传递。

为了在我们的 WordPress 和 Joomla 安装中使用漂亮或 SEO 友好的 URL,需要 UTF-8 字符。

在 PHP 中,$_SERVER['REQUEST_URI'] 看起来像这样

/ p r e s s e / p r  ø  v e s i d e
2f7072657373652f7072 f8 766573696465

在 web 服务器根目录下的 web.config 文件中

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
   <appSettings>
      <add key="aspnet:UseLegacyRequestUrlGeneration" value="true" />
   </appSettings>
   <system.web>
      <globalization
         requestEncoding="utf-8"
         responseEncoding="utf-8"
         culture="da-DK"
         uiCulture="da-DK" />
   </system.web>
   <system.webServer>
   ...
   <system.webServer>
<configuration>

【问题讨论】:

    标签: php wordpress iis joomla utf-8


    【解决方案1】:

    对注册表应用以下更改解决了问题

    reg add HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\w3svc\Parameters /v FastCGIUtf8ServerVariables /t REG_MULTI_SZ /d REQUEST_URI\0PATH_INFO
    

    似乎来自 IIS 7.5 的 Microsoft KB2277918 热修复已被整合到 IIS 8.5 中

    应用注册表更改后,$_SERVER['REQUEST_URI'] 在 PHP 中看起来像这样

    / p r e s s e / p r  Ã ¸  v e s i d e
    2f7072657373652f7072 c3b8 766573696465
    

    字节 C3 B8 是丹麦字母“ø”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多