UTF-8文件名中的字符,链接的URL返回404错误

时间:2012-08-03 14:47:34

标签: php character-encoding

我正在使用Fork CMS,当上传文件名中包含特殊字符的文件(例如é或à)时,文件名(présentation.pdf)将作为pr%c3%a9sentation.pdf保存在FTP上。

使用后端链接到文件时,网址显示为http://www.domain.com/files/pr%c3%a9sentation.pdf,但几乎所有浏览器都会将您链接到http://www.domain.com/files /présentation.pdf,这会导致出现http 404错误。

有关我应该在哪里寻找的任何建议吗?

5 个答案:

答案 0 :(得分:3)

尝试按以下方式访问它:http://www.domaine.com/files/pr%25c3%25a9sentation.pdf

但是你应该在保存之前从文件名中删除重音字符,这样可以避免任何问题。

答案 1 :(得分:2)

确保您的FTP服务器和FTP客户端都遵守RFC 2640,因此它们使用UTF-8编码而不是ASCII。 ASCII不支持非英文字符,包括带有重音符号的字符。有关详情,请参阅此处:http://wiki.filezilla-project.org/Character_Set


<强>更新

我猜“FTP”是指服务器上的存储空间,而不是通过文件传输协议上传文件。如果文件是通过Fork CMS上传的,并且上传文件的文件名变为pr%c3%a9sentation.pdf,则Fork CMS无法正确处理文件名。

答案 2 :(得分:1)

最后的答案是真的 但是如果你想强制它,用%25c3%替换第一个%并删除第二个。

答案 3 :(得分:1)

如果文件名称中包含%,则必须执行%25以重现相同的%字符。因此pr%25c3%25a9sentation.pdf会转换为pr%c3%a9sentation.pdf,这是文件的名称。

一个理智的解决方案是从文件名中删除特殊字符并尊重Internet文件命名约定,而不是试图规避一开始就不存在的问题。

旁注:我是法国人,所以不要告诉我presentation不像présentation那样可读。

答案 4 :(得分:1)

最新的Fork CMS版本已解决此问题, 通过使用CommonUri :: uri()