Maison  >  Article  >  base de données  >  从数据库中读取字符串时其中的空格变成加号

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

WBOY
WBOYoriginal
2016-06-07 15:36:011749parcourir

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");

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:Web实用技巧总结Article suivant:sql语句1数据库创建、查看