|
|
|
|
/* Copyright (C) 2011 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɵ<EFBFBD><EFBFBD>ĺͷ<EFBFBD><EFBFBD><EFBFBD>.
|
|
|
|
|
* <EFBFBD><EFBFBD>ֹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><EFBFBD>;.
|
|
|
|
|
*
|
|
|
|
|
* <EFBFBD><EFBFBD>ϵԭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>: querw@sina.com
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
|
|
|
|
|
1. ʵ<EFBFBD><EFBFBD>USC<EFBFBD><EFBFBD>ѹ<EFBFBD><EFBFBD>,Unicode <-> UTF-8.
|
|
|
|
|
2. ʵ<EFBFBD>ֶ<EFBFBD><EFBFBD>ֽ<EFBFBD><EFBFBD><EFBFBD> <-> Unicode
|
|
|
|
|
|
|
|
|
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Unicode<EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD> wstring <EFBFBD>洢.
|
|
|
|
|
<EFBFBD><EFBFBD><EFBFBD>ڷ<EFBFBD>Unicode<EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> string <EFBFBD>洢. ANSI, GB2312 <EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>
|
|
|
|
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>UTF-8<EFBFBD><EFBFBD>,Ҳ<EFBFBD><EFBFBD> string <EFBFBD>洢, UTF-8<EFBFBD>ı<EFBFBD><EFBFBD>봮<EFBFBD>в<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>null<EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
<EFBFBD><EFBFBD>Ҫʹ<EFBFBD><EFBFBD>ATL <EFBFBD>е<EFBFBD> USES_CONVERSION; A2W, A2T, W2A <EFBFBD>ȵĺ<EFBFBD>, <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Щ<EFBFBD>궼<EFBFBD><EFBFBD><EFBFBD><EFBFBD> alloca() <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ں<EFBFBD><EFBFBD><EFBFBD>ջ<EFBFBD>з<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>.
|
|
|
|
|
<EFBFBD><EFBFBD>Ȼ<EFBFBD>dz<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>غ<EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Σ<EFBFBD><EFBFBD>, <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ջֻ<EFBFBD><EFBFBD> 1M <EFBFBD>Ĵ<EFBFBD>С.
|
|
|
|
|
|
|
|
|
|
<EFBFBD><EFBFBD><EFBFBD>µĺ<EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>õĿռ䶼<EFBFBD><EFBFBD><EFBFBD>ڶ<EFBFBD><EFBFBD>з<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD>Ƚϰ<EFBFBD>ȫ.
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
#include <string>
|
|
|
|
|
#if defined(_WIN32) || defined(WIN32)
|
|
|
|
|
#include "Windows.h"
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#if defined(_UNICODE) || defined(UNICODE)
|
|
|
|
|
#define TtoA WtoA
|
|
|
|
|
#define AtoT AtoW
|
|
|
|
|
#define WtoT(a) (a)
|
|
|
|
|
#define TtoW(a) (a)
|
|
|
|
|
typedef std::wstring _tstring;
|
|
|
|
|
#else
|
|
|
|
|
#define TtoA(a) (a)
|
|
|
|
|
#define AtoT(a) (a)
|
|
|
|
|
#define WtoT WtoA
|
|
|
|
|
#define TtoW AtoW
|
|
|
|
|
typedef std::string _tstring;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
std::string WtoA(const wchar_t* pwszSrc);
|
|
|
|
|
std::string WtoA(const std::wstring &strSrc);
|
|
|
|
|
|
|
|
|
|
std::wstring AtoW(const char* pszSrc);
|
|
|
|
|
std::wstring AtoW(const std::string &strSrc);
|
|
|
|
|
|
|
|
|
|
std::string WtoUTF8(const wchar_t* pwszSrc);
|
|
|
|
|
std::string WtoUTF8(const std::wstring &strSrc);
|
|
|
|
|
|
|
|
|
|
std::wstring UTF8toW(const char* pszSrc);
|
|
|
|
|
std::wstring UTF8toW(const std::string &strSr);
|
|
|
|
|
|
|
|
|
|
std::string AtoUTF8(const char* src);
|
|
|
|
|
std::string AtoUTF8(const std::string &src);
|
|
|
|
|
|
|
|
|
|
std::string UTF8toA(const char* src);
|
|
|
|
|
std::string UTF8toA(const std::string &src);
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD> null <20><>β<EFBFBD><CEB2><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>UTF-8, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0, Ҳֻ<D2B2><D6BB>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>պ÷<D5BA><C3B7><EFBFBD>UTF8<46>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>ֵ˵<D6B5><CBB5>:
|
|
|
|
|
// 1 -> <20><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>UTF-8<><38><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
// -1 -> <20><><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>UTF-8<><38><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD>
|
|
|
|
|
// -2 -> <20><><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>UTF-8<>ֽڱ<D6BD><DAB1><EFBFBD><EFBFBD>ĺ<EFBFBD><C4BA><EFBFBD><EFBFBD>ֽ<EFBFBD>.
|
|
|
|
|
int IsTextUTF8(const char* pszSrc);
|