HTTP协议header中Content-Disposition中文文件名乱码
HTTP协议中,Content-Disposition头部字段用于指定将要被发送的实体正文的性质。这个字段通经常使用于唆使浏览器应当怎样处理接收到的文件,包括保存文件的名称和类型等信息。
当Content-Disposition头部字段中的文件名包括中文字符时,由于HTTP协议默许使用的是ASCII编码,可能会致使中文文件名乱码的问题。
为了解决这个问题,可使用RFC 5987中定义的扩大语法,将文件名进行编码。这个扩大语法使用了百分号和ASCII码表示法来编码非ASCII字符。例如,一个中文文件名"中文文件.txt"可以被编码为"%E4%B8%AD%E6%96%87%E6%96%87%E4%BB%B6.txt"。
在Content-Disposition头部字段中,可使用filename*参数来指定编码后的文件名。例如:
Content-Disposition: attachment; filename*=UTF⑻''%E4%B8%AD%E6%96%87%E6%96%87%E4%BB%B6.txt
这样浏览器在接收到文件时,就能够正确解码文件名,避免中文文件名乱码的问题。
需要注意的是,区分的浏览器对Content-Disposition头部字段的解析方式可能有所区分,因此在实际使用时,需要进行充分的测试和兼容性处理。
TOP