You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

69 lines
1.7 KiB
C

/* 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);