Click here to Skip to main content
15,868,164 members
Articles / Mobile Apps / Windows Mobile

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

Rate me:
Please Sign up or sign in to vote.
3.70/5 (8 votes)
17 Jul 2007CPOL1 min read 97.4K   3.3K   25   14
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)


Written By
Software Developer (Senior)
Israel Israel
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions

 
QuestionSolution for URL Decode (Including Japanese Characters) Pin
Prashant Kawade8-Sep-15 20:14
Prashant Kawade8-Sep-15 20:14 
QuestionGood work, thanks Pin
bosfan24-Oct-14 0:54
bosfan24-Oct-14 0:54 
GeneralThank YOU! Pin
djonik156216-Jun-11 21:54
djonik156216-Jun-11 21:54 
GeneralMy vote of 5 Pin
Blood_Axis15-Sep-10 11:13
Blood_Axis15-Sep-10 11:13 
QuestionHow I can use your code to convert char* UTF-8 to wchar string(decode in java) Pin
Member 327298422-Mar-09 5:20
Member 327298422-Mar-09 5:20 
GeneralSome easier way to encode and decode the URLs [modified] Pin
elo12330-Dec-08 23:45
elo12330-Dec-08 23:45 
GeneralKorean/Chinese/Japanese support Pin
Taein Kim4-Sep-07 3:53
Taein Kim4-Sep-07 3:53 
GeneralRe: Korean/Chinese/Japanese support Pin
Kenny Zhao29-Sep-07 20:04
Kenny Zhao29-Sep-07 20:04 
GeneralRe: Korean/Chinese/Japanese support Pin
chris_cppteam26-Nov-08 15:12
chris_cppteam26-Nov-08 15:12 
GeneralRe: Korean/Chinese/Japanese support Pin
Never Winter20-Jul-08 19:04
Never Winter20-Jul-08 19:04 
GeneralRe: Korean/Chinese/Japanese support Pin
Daniel Cohen Gindi20-Jul-08 20:58
Daniel Cohen Gindi20-Jul-08 20:58 
GeneralAdditional reserverd characters Pin
Fernando Sarlenga25-Jul-07 5:23
Fernando Sarlenga25-Jul-07 5:23 
GeneralRe: Additional reserverd characters Pin
Daniel Cohen Gindi25-Jul-07 7:34
Daniel Cohen Gindi25-Jul-07 7:34 
GeneralDecoding [modified] Pin
Daniel Cohen Gindi17-Jul-07 21:03
Daniel Cohen Gindi17-Jul-07 21:03 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.