因为在编写一个应用程序中需要访问网页,URL中带中文,发现在后台保存到数据库中的数据是乱码。原来是API函数InternetCanonicalizeUrl()并不支持中文的编码,花了大量时间亦找不到合用的API函数,回头一想,自己写个函数比上网找更快,就动手写了这个类CUrlEncodeUnicode。
CUrlEncodeUnicode只包含二个static方法:
static bool Encode(LPCWSTR inurl, LPTSTR outurl, size_t size);
static bool Decode(LPCTSTR inurl, LPWSTR outurl, size_t size);
所以使用非常简单。下面是一个示例:
// testUrlEncode.cpp : test CUrlEncodeUnicode
//
#include "stdafx.h"
#include "../urlencode/CUrlEncodeUnicode.h"
#include <test.h>
using namespace test;
int _tmain(int argc, _TCHAR* argv[])
{
TCHAR outurl[256];
wchar_t outurl2[256];
LPCWSTR url=L"http://localhost/shk11/test.aspx?username=清泉&mac=00:1E:68:7A:00:FF&tel=&email=pclion 2008@163.com";
testBegin(_T("CUrlEncodeUnicode测试"));
CUrlEncodeUnicode::Encode(url,outurl,256);
_tprintf(_T("%s/n"), outurl);
CUrlEncodeUnicode::Decode(outurl, outurl2, 256);
_tprintf(_T("%s/n"), outurl2);
testMessage(_T("Decode()"), outurl2, url, true);
testOK();
return 0;
}
完整的源程序见http://www.tryahead.com/shk/pclion/urlencode.zip(7KB)
欢迎使用速记天才2.0:http://www.tryahead.com/shk/