plus character is getting lost while encoding and decoding HTML in a dot net Framework application Edit
plus (+) character is getting lost while encoding and decoding HTML in a .NET Framework application. Character getting lost, is likely due to the way URL encoding and decoding is handled. In URL encoding, a plus sign (+) is typically interpreted as a space. This means when you encode your HTML and send it to the server, if there are any + characters, they will be turned into spaces upon decoding. Here's how you can address this:
Code With Problem
$.ajax({ type: "POST", url: "/Article/Save", data: { id: '@Model.Id', data: encodeURI(htmlData), metakeywords: encodeURI(metakeywordsdata), metadescription: encodeURI(metadescriptiondata), title: encodeURI(title), CategoryId: CategoryId }, success: function (msg, status, jqXHR) { location.reload(); }, });
Solution
Encode Plus Sign Properly: Modify your JavaScript function to replace + signs with a URL-encoded representation. You can use encodeURIComponent instead of encodeURI for this. encodeURIComponent is more suitable for encoding individual components of a query string. Fixed Code
$.ajax({ type: "POST", url: "/Article/Save", data: { id: '@Model.Id', data: encodeURIComponent(htmlData), metakeywords: encodeURIComponent(metakeywordsdata), metadescription: encodeURIComponent(metadescriptiondata), title: encodeURIComponent(title), CategoryId: CategoryId }, success: function (msg, status, jqXHR) { location.reload(); }, });
C# Server Code
[HttpPost] [Authorize] public ActionResult Save(Guid id, string title, String data, string metakeywords, string metadescription, Guid CategoryId) { data = Server.UrlDecode(data);