在你的Content-Disposition头嵌入国外字符

因为英语是我的母语,所以有些时候我也不知道我的web应用程序是否能和其它非美国的语言很好的兼容,这就是一个和“Content-Disposition”头相关的例子。我已经用了很多年了,但是,在上周我才发现Content-Disposition头中的“文件名”部分不自然的处理非美国的ASCII字符,幸运的是,现在的浏览器都支持对Content-Disposition头的拓展以允许UTF-8的编码字符串。

谷歌搜索了下,我发现了这个,其中有很多的关于Content-Disposition头的测试用例。这些测试表名,你可以加上一个特殊的符号。标准文件名加一个带URL-编码字符的UTF-8文件名是被允许的。

在这个例子中,”filename*=UTF-8””符号会被现在的浏览器保留,而老版浏览器则会将其忽略,直接返回“filename”。

当我运行所有的代码时,我被提示有一个文件下载:

BGL%52YIK{0EDYFX}RV}0TW

 

请看,现在的编码已经是外国的字符(法国),这样,程序就可以在几乎所有现在的浏览器里正常工作了,包括最新版本的IE。