我正在开发一个在 URL 的文件夹名称中使用 UTF-8 字符的系统。导航到这些 URL 没有问题,一切都按预期工作 -除非发出重定向到网站上的另一个页面;于是浏览器似乎对扩展字符进行了编码。
举个例子,我试图重定向到以下相对 URL:
/geschäft/käfer/
如果我直接在地址栏中访问该 URL,则没有问题。但是,如果我更改位置标头以将浏览器重定向到此 URL,它最终会出现在:
/gesch%E4ft/k%E4fer/
如果我查看原始页面的响应标头(这是对已翻译内容的 301 重定向),我可以看到以下条目:
Location:/geschäft/käfer/
似乎正确的细节最终出现在标题中,但浏览器的地址栏显示了上面详述的%E4的编码值。我尝试了各种将 URL 输入到位置标头中的方法,但都得到了相同的结果。
我在 Chrome 37.0.2062.120 m 和 Firefox 32.0.2 上看到了这种行为。
这是在开发盒上运行的,Windows 7 Home with IIS7.5
编辑:
看来这个问题可能与 ColdFusion 直接相关。如果我使用 Javascript 重定向到 url,这可行……但需要注意的是,文件必须与 BOM 一起保存。如果我使用cflocation
,或者如果我使用 pagecontext 手动插入标题,则无论是否存在 BOM,问题都会持续存在。
我还注意到使用类似的问题,cfinclude
除非调用模板与 BOM 一起保存,否则这些扩展字符显示不正确。