Rumah  >  Artikel  >  pangkalan data  >  从数据库中读取字符串时其中的空格变成加号

从数据库中读取字符串时其中的空格变成加号

WBOY
WBOYasal
2016-06-07 15:36:011749semak imbas

HttpUtility.UrlEncode 在 Encode 的时候, 将空转换成加号(''), 在 Decode 的时候将加号转为空, 但是浏览器是不能理解加号为空的, 所以如果文件名包含了空, 在浏览器下载得到的文件, 空就变成了加号。 在用 ASP.Net 开发页面的时候, 我们常常通过 System.Web

HttpUtility.UrlEncode 在 Encode 的时候, 将空格转换成加号('+'), 在 Decode 的时候将加号转为空格, 但是浏览器是不能理解加号为空格的, 所以如果文件名包含了空格, 在浏览器下载得到的文件, 空格就变成了加号。

在用 ASP.Net 开发页面的时候, 我们常常通过 System.Web.HttpUtility.UrlEncode 和 UrlDecode 在页面间通过 URL 传递参数. 成对的使用 Encode 和Decode 是没有问题的.但是, 我们在编写文件下载的页面的时候, 常常用如下方法来指定下载的文件的名称:

Response.AddHeader("Content-Disposition","attachment;filename="+ HttpUtility.UrlEncode(fileName, Encoding.UTF8));

之所以转换成 UTF8 是为了支持中文文件名.

这时候问题就来了, 因为HttpUtility.UrlEncode 在 Encode 的时候, 将空格转换成加号('+'), 在Decode 的时候将加号转为空格, 但是浏览器是不能理解加号为空格的, 所以如果文件名包含了空格, 在浏览器下载得到的文件, 空格就变成了加号.

一个解决办法是, 在HttpUtility 的 UrlEncode 之后, 将 "+" 替换成 "%20"( 如果原来是 "+" 则被转换成 "%2b" ) , 如:

fileName = HttpUtility.UrlEncode(fileName,Encoding.UTF8);

fileName = fileName.Replace("+","%20");

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:Web实用技巧总结Artikel seterusnya:sql语句1数据库创建、查看