相关疑难解决方法(0)

如何在HTTP中编码Content-Disposition头文件名参数?

想要强制下载资源而不是直接在Web浏览器中呈现资源的Web应用程序Content-Disposition在表单的HTTP响应中发出标头:

Content-Disposition: attachment; filename=FILENAME

filename参数可用于建议浏览器下载资源的文件的名称.但是,RFC 2183(Content-Disposition)在2.3节(文件名参数)中指出文件名只能使用US-ASCII字符:

当前[RFC 2045]语法将参数值(以及因此内容处理文件名)限制为US-ASCII.我们认识到允许在文件名中使用任意字符集的巨大愿望,但是定义必要的机制超出了本文档的范围.

然而,有经验证据表明,当今大多数流行的Web浏览器似乎都允许非US-ASCII字符(缺乏标准)对编码方案和文件名的字符集规范不同意.问题是,如果文件名"naïvefile"(没有引号,第三个字母是U + 00EF)需要编码到Content-Disposition标题中,那么流行浏览器采用的各种方案和编码是什么?

出于这个问题的目的,流行的浏览器是:

  • 火狐
  • IE浏览器
  • 苹果浏览器
  • 谷歌浏览器
  • 歌剧

browser specifications http-headers

509
推荐指数
15
解决办法
33万
查看次数

当表单作为multipart/form-data发布时,UTF-8文本会出现乱码

我正在将文件上传到服务器.文件上载HTML表单有2个字段:

  1. 文件名 - 一个HTML文本框,用户可以使用任何语言提供名称.
  2. 文件上传 - 一个HTMl'文件',用户可以在其中指定要上载的磁盘文件.

提交表单时,将正确接收文件内容.但是,当读取文件名(上面的第1点)时,它会出现乱码.ASCII字符正确显示.如果用其他语言(德语,法语等)给出名称,则存在问题.

在servlet方法中,请求的字符编码设置为UTF-8.我甚至尝试过如上所述的过滤器 - 如何让这段代码提交一个带有jQuery/Ajax工作的UTF-8表单textarea? - 但它似乎不起作用.只有文件名似乎是乱码.

文件名所在的MySQL表支持UTF-8.我给了随机的非英文字符,它们被正确存储/显示.

使用Fiddler,我监视请求并正确传递所有POST数据.我正在尝试确定数据如何/在哪里出现乱码.任何帮助将不胜感激.

java java-ee

53
推荐指数
5
解决办法
13万
查看次数

标签 统计

browser ×1

http-headers ×1

java ×1

java-ee ×1

specifications ×1