从数据库中读取字符串时其中的空格变成加号
Jun 07, 2016 pm 03:36 PMHttpUtility.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");

人気の記事

人気の記事

ホットな記事タグ

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Go 言語はデータベースの追加、削除、変更、クエリ操作をどのように実装しますか?

python_python の繰り返し文字列チュートリアルで文字列を繰り返す方法

PHP で MySQLi を使用してデータベース接続を確立するための詳細なチュートリアル

Hibernate はポリモーフィック マッピングをどのように実装しますか?

iOS 18では、紛失または破損した写真を復元するための新しい「復元」アルバム機能が追加されます

PHP 文字列操作: 余分なカンマを削除し、カンマのみを保持する実装のヒント
