Windows Mobile 2003Pocket PC 2002Windows Mobile 5嵌入式Windows MobileVisual C++ 7.1Visual C++ 8.0Windows VistaVisual C++ 7.0Visual Studio .NET 2003Visual Studio 2005Visual C++ 6.0Windows XPMFC初学者开发Visual StudioWindowsC++
如何将 URL 编码/解码为 UTF8 格式(包含 %20 等)






3.70/5 (8投票s)
本文介绍了如果您的应用程序需要 Web 支持,如何将 URL 编码/解码为 UTF8 格式(包含 %20 等)。
引言
本文将向您展示如何将 URL 编码/解码为 UTF-8 格式。如果您正在编写一个必须具有 Web 支持的应用程序,例如将 WebBrowser
ActiveX 控件导航到某个 URL,则必须对其进行编码,因为有很多字符(例如,希伯来语、带重音的拉丁字母、空格等等)无法出现在 URL 中。
我编写了一个类来完成所有工作,它使用起来最简单。 祝你使用愉快!
背景
URL 仅支持大约 60 个字符,所有其他字符都使用 %XX 十六进制格式以 UTF-8 格式写入。
有关 URL 编码的主要规则的更多信息,您可以查看 这里。
Using the Code
我已在本文中包含了源代码,您可以毫不费力地使用它
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"
这个类可以处理比空格多得多的内容,这只是一个简单的例子。
函数的用法如下
CString Encode(CString strURL, BOOL bEncodeReserved/*=FALSE*/);
CString Decode(CString strURL);
这里,bEncodeReserved
意味着您也希望对保留字符进行编码。 此参数对于完整的 URL 来说很危险,因为它也会编码例如“/”等字符,并且会破坏您的 URL。但是,如果您要编码关键字,例如,您应该将此参数设置为 TRUE
。
大概就是这样了,希望对您有所帮助。
历史
- 2007 年 7 月 17 日: 初次发布。