Search code examples
vb.netcookiesampersand

How do you use an Ampersand in an HTTPCookie in VB.NET?


I have a cookie saved to the user as follows...

Dim searchCookie As HttpCookie = New HttpCookie("SearchCriteria")
searchCookie.Item("SearchText") = FullSearchCriteria.SearchText
searchCookie.Item("SearchType") = FullSearchCriteria.SearchType

The SearchText stores a value they have input in a previous page. We have observed if there is an ampersand in the cookie (eg Tyne & Wear), then the cookie doesn't save subsequent values (SearchType).

What happens is the cookie is output like this:

SearchText=Tyne &

Obviously the ampersand is confusing the cookie. Is there a way to prevent this happening?


Solution

  • You can use the URLEncode method.

    Something like:

    imports HttpContext.Current
    ...
    Dim searchCookie As HttpCookie = New HttpCookie("SearchCriteria")
    searchCookie.Item("SearchText") = Server.UrlEncode(FullSearchCriteria.SearchText)
    searchCookie.Item("SearchType") = Server.UrlEncode(FullSearchCriteria.SearchType)
    

    This is essential as only certain characters are allowed in cookies with characters such as ampersands breaking them.