Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles / Mobile / WinMobile

How to encode/decode URLs to the UTF8 format (with %20 and so)

3.70/5 (8 votes)
17 Jul 2007CPOL1 min read 2   3.4K  
This article shows how to encode/decode URLs to the UTF8 format (with %20 and so) if you have to have web support in your application.

Introduction

This article will show you how to encode/decode URLs to the UTF-8 format. If you are writing an application that must have web support, and for example navigating a WebBrowser ActiveX control to a certain URL, you have to encode it, for there are many characters (e.g., Hebrew, accented Latin, spaces, and so on...) that cannot be in a URL.

I have written a class to do all the work, and it is the simplest to use. Enjoy!

Background

URLs support only about 60 characters, and all other characters are written in the UTF-8 format, using the %XX hexadecimal format.

For more information about the main rules of URL encoding, you can have a look here.

Using the Code

I have included the source code in this article, and you can use it without any effort:

C++
CUrlEncode cEncoder;
cEncoder.Encode(_T("http://www.google.com/search?q=my search"));
// This will result in http://www.google.com/search?q=my%20search
cEncoder.Decode(_T("http://www.google.com/search?q=%22my%20search%22"));
// This will result in http://www.google.com/search?q="my search"

This class can deal with much more than spaces, and this is just a simple example.

The usage for the functions is as follows:

C++
CString Encode(CString strURL, BOOL bEncodeReserved/*=FALSE*/);
CString Decode(CString strURL);

Here, bEncodeReserved means that you want to encode the reserved characters too. This parameter is dangerous for full URLs because it will also encode characters like '/', and will destroy your URL. But if you are encoding keywords, for example, you should set this parameter to TRUE.

That's about it, hope I helped.

History

  • 17th July, 2007: Initial post.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)