想要强制下载资源而不是直接在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标题中,那么流行浏览器采用的各种方案和编码是什么?
出于这个问题的目的,流行的浏览器是:
我在PHP中转换这两种类型时遇到了问题.这是我在谷歌搜索的代码
function strToHex($string){
$hex='';
for ($i=0; $i < strlen($string); $i++){
$hex .= dechex(ord($string[$i]));
}
return $hex;
}
function hexToStr($hex){
$string='';
for ($i=0; $i < strlen($hex)-1; $i+=2){
$string .= chr(hexdec($hex[$i].$hex[$i+1]));
}
return $string;
}
Run Code Online (Sandbox Code Playgroud)
当我使用XOR加密时,我检查并发现了这一点.
我有字符串"this is the test"
,在带有键的XOR之后,我的结果是字符串???§P?§P ?§T?§?
.之后,我尝试通过函数strToHex()将其转换为十六进制,我得到了这些12181d15501d15500e15541215712
.然后,我测试了函数hexToStr(),我有???§P?§P?§T?§q
.那么,我该怎么做才能解决这个问题呢?当我转换这个2样式值时为什么会出错?