有朋友会说ms写的东西,你只不过是找到了还要写,我写给自己,也想一些朋友再别想我这么傻!通常的编码一般都有些好的api,如果我们拿来直接使用,既方便还安全省事!
最近经常碰到编码的问题,可是找这样的api不好找,前两天找一个,今天又在atl中找到一个,试了一下都可以成功实现编码!
1、 #include <shlwapi.h>
HRESULT UrlEscape(
LPCTSTR pszURL, LPTSTR pszEscaped, LPDWORD pcchEscaped, DWORD dwFlags );
eg:
_bstr_t bstrOut = SysAllocStringLen(L"",2048);
DWORD len = 2048;
if(UrlEscape(bstrIn,bstrOut,&len,URL_ESCAPE_PERCENT)) //编码
{
bsSite += bstrOut.GetBSTR();
}
详细请看:ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/shellcc/platform/shell/reference/shlwapi/path/urlescape.htm
2、#include <atlutil.h>
inline BOOL AtlEscapeUrl( LPCSTR szStringIn, LPSTR szStringOut, DWORD* pdwStrLen, DWORD dwMaxLength, DWORD dwFlags = 0 ) throw( );
eg:
_bstr_t bstrOut = SysAllocStringLen(L"",2048);
DWORD len = 2048;
if(AtlEscapeUrl(bstrIn,bstrOut,&len,2048,ATL_URL_ENCODE_PERCENT)) //编码
{
bsSite += bstrOut.GetBSTR();
}
从上面的代码基本上一样,根据个人喜好使用。
有兴趣的朋友可以去看看 :
ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/vclib/html/vclrfatlserverfunctions.htm
里面列出了atl提供编码的所有函数,其中有utf8的编码转换,使用起来很方便。以前有个同事问我utf8的转换如何用写,但是我用几个api倒了几次才转好,现在有了AtlUnicodeToUTF8我们不用再那么麻烦了。