Funkce kódování textu ATL
Tyto funkce podporují kódování a dekódování textu.
Function | Popis |
---|---|
AtlGetHexValue | Voláním této funkce získáte číselnou hodnotu šestnáctkové číslice. |
AtlGetVersion | Voláním této funkce získáte verzi knihovny ATL, kterou používáte. |
AtlHexDecode | Dekóduje řetězec dat, který byl kódován jako šestnáctkový text, například předchozím voláním AtlHexEncode. |
AtlHexDecodeGetRequiredLength | Voláním této funkce získáte bajtovou velikost vyrovnávací paměti, která by mohla obsahovat data dekódovaná z šestnáctkově zakódovaného řetězce zadané délky. |
AtlHexEncode | Voláním této funkce zakódujete data jako řetězec šestnáctkového textu. |
AtlHexEncodeGetRequiredLength | Voláním této funkce získáte znakovou velikost vyrovnávací paměti, která by mohla obsahovat řetězec zakódovaný z dat zadané velikosti. |
AtlHexValue | Voláním této funkce získáte číselnou hodnotu šestnáctkové číslice. |
AtlUnicodeToUTF8 | Voláním této funkce převedete řetězec s kódováním Unicode na UTF-8. |
BEncode | Voláním této funkce převedete data pomocí kódování B. |
BEncodeGetRequiredLength | Voláním této funkce získáte znakovou velikost vyrovnávací paměti, která by mohla obsahovat řetězec zakódovaný z dat zadané velikosti. |
EscapeXML | Voláním této funkce převedete znaky, které jsou problematické pro použití v kódu XML, na jejich bezpečné ekvivalenty. |
GetExtendedChars | Voláním této funkce získáte počet znaků s diakritikou v řetězci. |
IsExtendedChar | Voláním této funkce zjistíte, jestli je daný znak rozšířeným znakem (menší než 32, větší než 126, nikoli tabulátor, odřádkování nebo návrat na začátek řádku). |
QEncode | Voláním této funkce převedete data pomocí kódování Q. |
QEncodeGetRequiredLength | Voláním této funkce získáte znakovou velikost vyrovnávací paměti, která by mohla obsahovat řetězec zakódovaný z dat zadané velikosti. |
QPDecode | Dekóduje řetězec dat, který byl kódován ve formátu quoted-printable, například předchozím voláním QPEncode. |
QPDecodeGetRequiredLength | Voláním této funkce získáte bajtovou velikost vyrovnávací paměti, která by mohla obsahovat data dekódovaná z řetězce zadané délky zakódovaného ve formátu quoted-printable. |
QPEncode | Voláním této funkce zakódujete data do formátu quoted-printable. |
QPEncodeGetRequiredLength | Voláním této funkce získáte znakovou velikost vyrovnávací paměti, která by mohla obsahovat řetězec zakódovaný z dat zadané velikosti. |
UUDecode | Dekóduje řetězec dat, která byla uuenkódována, například předchozím voláním UUEncode. |
UUDecodeGetRequiredLength | Voláním této funkce získáte bajtovou velikost vyrovnávací paměti, která by mohla obsahovat data dekódovaná z řetězce zadané délky zakódovaného do kódování UUENCODE. |
UUEncode | Voláním této funkce zakódujete data do kódování UUENCODE. |
UUEncodeGetRequiredLength | Voláním této funkce získáte znakovou velikost vyrovnávací paměti, která by mohla obsahovat řetězec zakódovaný z dat zadané velikosti. |
Požadavky
Hlavička: atlenc.h
AtlGetHexValue
Voláním této funkce získáte číselnou hodnotu šestnáctkové číslice.
inline char AtlGetHexValue(char chIn) throw();
Parametry
brada
Šestnáctkový znak "0"-'9', 'A'-'F' nebo 'a'-'f'.
Návratová hodnota
Číselná hodnota vstupního znaku interpretovaná jako šestnáctková číslice. Například vstup "0" vrátí hodnotu 0 a vstup "A" vrátí hodnotu 10. Pokud vstupní znak není šestnáctková číslice, vrátí tato funkce hodnotu -1.
AtlGetVersion
Voláním této funkce získáte verzi knihovny ATL, kterou používáte.
ATLAPI_(DWORD) AtlGetVersion(void* pReserved);
Parametry
udržovaný
Vyhrazený ukazatel.
Návratová hodnota
Vrátí celočíselnou hodnotu DWORD verze knihovny ATL, kterou kompilujete nebo spouštíte.
Příklad
Funkce by měla být volána následujícím způsobem.
DWORD ver;
ver = AtlGetVersion(NULL);
Požadavky
Hlavička: atlbase.h
AtlHexDecode
Dekóduje řetězec dat, který byl kódován jako šestnáctkový text, například předchozím voláním AtlHexEncode.
inline BOOL AtlHexDecode(
LPCSTR pSrcData,
int nSrcLen,
LPBYTE pbDest,
int* pnDestLen) throw();
Parametry
pSrcData
Řetězec obsahující data, která mají být dekódována.
nSrcLen
Délka znaků pSrcData.
pbDest
Vyrovnávací paměť přidělená volajícím pro příjem dekódovaných dat.
pnDestLen
Ukazatel na proměnnou, která obsahuje délku v bajtech pbDestu. Pokud je funkce úspěšná, proměnná přijme počet bajtů zapsaných do vyrovnávací paměti. Pokud funkce selže, proměnná obdrží požadovanou délku v bajtech vyrovnávací paměti.
Návratová hodnota
Vrátí hodnotu PRAVDA při úspěchu, NEPRAVDA při selhání.
AtlHexDecodeGetRequiredLength
Voláním této funkce získáte bajtovou velikost vyrovnávací paměti, která by mohla obsahovat data dekódovaná z šestnáctkově zakódovaného řetězce zadané délky.
inline int AtlHexDecodeGetRequiredLength(int nSrcLen) throw();
Parametry
nSrcLen
Počet znaků v zakódovaném řetězci.
Návratová hodnota
Počet bajtů vyžadovaných pro vyrovnávací paměť, která by mohla obsahovat dekódovaný řetězec nSrcLen znaků.
AtlHexEncode
Voláním této funkce zakódujete data jako řetězec šestnáctkového textu.
inline BOOL AtlHexEncode(
const BYTE * pbSrcData,
int nSrcLen,
LPSTR szDest,
int * pnDestLen) throw();
Parametry
pbSrcData
Vyrovnávací paměť obsahující data, která se mají zakódovat.
nSrcLen
Délka v bajtech dat, která se mají zakódovat.
szDest
Vyrovnávací paměť přidělená volajícím pro příjem zakódovaných dat.
pnDestLen
Ukazatel na proměnnou, která obsahuje délku znaků szDest. Pokud je funkce úspěšná, proměnná obdrží počet znaků zapsaných do vyrovnávací paměti. Pokud funkce selže, proměnná obdrží požadovanou délku ve znacích vyrovnávací paměti.
Návratová hodnota
Vrátí hodnotu PRAVDA při úspěchu, NEPRAVDA při selhání.
Poznámky
Každý bajt zdrojových dat je kódován jako 2 šestnáctkové znaky.
AtlHexEncodeGetRequiredLength
Voláním této funkce získáte znakovou velikost vyrovnávací paměti, která by mohla obsahovat řetězec zakódovaný z dat zadané velikosti.
inline int AtlHexEncodeGetRequiredLength(int nSrcLen) throw();
Parametry
nSrcLen
Počet bajtů dat, které se mají zakódovat.
Návratová hodnota
Počet znaků požadovaných pro vyrovnávací paměť, která by mohla obsahovat zakódovaná data nSrcLen bajtů.
AtlHexValue
Voláním této funkce získáte číselnou hodnotu šestnáctkové číslice.
inline short AtlHexValue(char chIn) throw();
Parametry
brada
Šestnáctkový znak "0"-'9', 'A'-'F' nebo 'a'-'f'.
Návratová hodnota
Číselná hodnota vstupního znaku interpretovaná jako šestnáctková číslice. Například vstup "0" vrátí hodnotu 0 a vstup "A" vrátí hodnotu 10. Pokud vstupní znak není šestnáctková číslice, vrátí tato funkce hodnotu -1.
AtlUnicodeToUTF8
Voláním této funkce převedete řetězec s kódováním Unicode na UTF-8.
ATL_NOINLINE inline int AtlUnicodeToUTF8(
LPCWSTR wszSrc,
int nSrc,
LPSTR szDest,
int nDest) throw();
Parametry
wszSrc
Řetězec Unicode, který se má převést
NSrc
Délka znaků řetězce Unicode.
szDest
Vyrovnávací paměť přidělená volajícím pro příjem převedeného řetězce.
nDest
Délka v bajtech vyrovnávací paměti.
Návratová hodnota
Vrátí počet znaků pro převedený řetězec.
Poznámky
Chcete-li určit velikost vyrovnávací paměti vyžadované pro převedený řetězec, zavolejte tuto funkci, která předává hodnotu 0 pro szDest a nDest.
BEncode
Voláním této funkce převedete data pomocí kódování B.
inline BOOL BEncode(
BYTE* pbSrcData,
int nSrcLen,
LPSTR szDest,
int* pnDestLen,
LPCSTR pszCharSet) throw();
Parametry
pbSrcData
Vyrovnávací paměť obsahující data, která se mají zakódovat.
nSrcLen
Délka v bajtech dat, která se mají zakódovat.
szDest
Vyrovnávací paměť přidělená volajícím pro příjem zakódovaných dat.
pnDestLen
Ukazatel na proměnnou, která obsahuje délku znaků szDest. Pokud je funkce úspěšná, proměnná obdrží počet znaků zapsaných do vyrovnávací paměti. Pokud funkce selže, proměnná obdrží požadovanou délku ve znacích vyrovnávací paměti.
pszCharSet
Znaková sada, která se má použít pro převod.
Návratová hodnota
Vrátí hodnotu PRAVDA při úspěchu, NEPRAVDA při selhání.
Poznámky
Schéma kódování "B" je popsáno v dokumentu RFC 2047 (https://www.ietf.org/rfc/rfc2047.txt).
BEncodeGetRequiredLength
Voláním této funkce získáte znakovou velikost vyrovnávací paměti, která by mohla obsahovat řetězec zakódovaný z dat zadané velikosti.
inline int BEncodeGetRequiredLength(int nSrcLen, int nCharsetLen) throw();
Parametry
nSrcLen
Počet bajtů dat, které se mají zakódovat.
nCharsetLen
Délka znaků znakové sady, která se má použít pro převod.
Návratová hodnota
Počet znaků požadovaných pro vyrovnávací paměť, která by mohla obsahovat zakódovaná data nSrcLen bajtů.
Poznámky
Schéma kódování "B" je popsáno v dokumentu RFC 2047 (https://www.ietf.org/rfc/rfc2047.txt).
EscapeXML
Voláním této funkce převedete znaky, které jsou problematické pro použití v kódu XML, na jejich bezpečné ekvivalenty.
inline int EscapeXML(
const wchar_t * szIn,
int nSrcLen,
wchar_t * szEsc,
int nDestLen,
DWORD dwFlags = ATL_ESC_FLAG_NONE) throw();
Parametry
szIn
Řetězec, který se má převést.
nSrclen
Délka znaků řetězce, které se mají převést.
szEsc
Vyrovnávací paměť přidělená volajícím pro příjem převedeného řetězce.
nDestLen
Délka znaků vyrovnávací paměti přidělené volajícím.
dwFlags
ATL_ESC Příznaky popisující způsob provedení převodu.
- ATL_ESC_FLAG_NONE Výchozí chování. Uvozovky a apostrofy nejsou převedeny.
- ATL_ESC_FLAG_ATTR uvozovky a apostrofy se převedou na
"
a'
v uvedeném pořadí.
Návratová hodnota
Délka v znaky převedeného řetězce.
Poznámky
Možné převody prováděné touto funkcí jsou uvedeny v tabulce:
Zdroj | Cíl |
---|---|
< | < |
> | > |
& | & |
' | ' |
" | " |
GetExtendedChars
Voláním této funkce získáte počet znaků s diakritikou v řetězci.
inline int GetExtendedChars(LPCSTR szSrc, int nSrcLen) throw();
Parametry
szSrc
Řetězec, který se má analyzovat.
nSrcLen
Délka řetězce v značce.
Návratová hodnota
Vrátí počet rozšířenýchznakůch
IsExtendedChar
Voláním této funkce zjistíte, jestli je daný znak rozšířeným znakem (menší než 32, větší než 126, nikoli tabulátor, odřádkování nebo návrat na začátek řádku).
inline int IsExtendedChar(char ch) throw();
Parametry
ch
Znak, který se má testovat
Návratová hodnota
TRUE, pokud je znak rozšířen, jinak NEPRAVDA.
QEncode
Voláním této funkce převedete data pomocí kódování Q.
inline BOOL QEncode(
BYTE* pbSrcData,
int nSrcLen,
LPSTR szDest,
int* pnDestLen,
LPCSTR pszCharSet,
int* pnNumEncoded = NULL) throw();
Parametry
pbSrcData
Vyrovnávací paměť obsahující data, která se mají zakódovat.
nSrcLen
Délka v bajtech dat, která se mají zakódovat.
szDest
Vyrovnávací paměť přidělená volajícím pro příjem zakódovaných dat.
pnDestLen
Ukazatel na proměnnou, která obsahuje délku znaků szDest. Pokud je funkce úspěšná, proměnná obdrží počet znaků zapsaných do vyrovnávací paměti. Pokud funkce selže, proměnná obdrží požadovanou délku ve znacích vyrovnávací paměti.
pszCharSet
Znaková sada, která se má použít pro převod.
pnNumEncoded
Ukazatel na proměnnou, která při vrácení obsahuje počet nebezpečných znaků, které se musely převést.
Návratová hodnota
Vrátí hodnotu PRAVDA při úspěchu, NEPRAVDA při selhání.
Poznámky
Schéma kódování "Q" je popsáno v DOKUMENTU RFC 2047 (https://www.ietf.org/rfc/rfc2047.txt).
QEncodeGetRequiredLength
Voláním této funkce získáte znakovou velikost vyrovnávací paměti, která by mohla obsahovat řetězec zakódovaný z dat zadané velikosti.
inline int QEncodeGetRequiredLength(int nSrcLen, int nCharsetLen) throw();
Parametry
nSrcLen
Počet bajtů dat, které se mají zakódovat.
nCharsetLen
Délka znaků znakové sady, která se má použít pro převod.
Návratová hodnota
Počet znaků požadovaných pro vyrovnávací paměť, která by mohla obsahovat zakódovaná data nSrcLen bajtů.
Poznámky
Schéma kódování "Q" je popsáno v DOKUMENTU RFC 2047 (https://www.ietf.org/rfc/rfc2047.txt).
QPDecode
Dekóduje řetězec dat, který byl kódován ve formátu quoted-printable, například předchozím voláním QPEncode.
inline BOOL QPDecode(
BYTE* pbSrcData,
int nSrcLen,
LPSTR szDest,
int* pnDestLen,
DWORD dwFlags = 0) throw();
Parametry
pbSrcData
[v] Vyrovnávací paměť obsahující data, která mají být dekódována.
nSrcLen
[v] Délka v bajtech pbSrcData.
szDest
[ven] Vyrovnávací paměť přidělená volajícím pro příjem dekódovaných dat.
pnDestLen
[ven] Ukazatel na proměnnou, která obsahuje délku v bajtech szDest. Pokud je funkce úspěšná, proměnná přijme počet bajtů zapsaných do vyrovnávací paměti. Pokud funkce selže, proměnná obdrží požadovanou délku v bajtech vyrovnávací paměti.
dwFlags
[v] ATLSMTP_QPENCODE příznaky popisující způsob provedení převodu.
Návratová hodnota
Vrátí hodnotu PRAVDA při úspěchu, NEPRAVDA při selhání.
Poznámky
Schéma kódování quoted-printable je popsáno v DOKUMENTU RFC 2045 (https://www.ietf.org/rfc/rfc2045.txt).
QPDecodeGetRequiredLength
Voláním této funkce získáte bajtovou velikost vyrovnávací paměti, která by mohla obsahovat data dekódovaná z řetězce zadané délky zakódovaného ve formátu quoted-printable.
inline int QPDecodeGetRequiredLength(int nSrcLen) throw();
Parametry
nSrcLen
Počet znaků v zakódovaném řetězci.
Návratová hodnota
Počet bajtů vyžadovaných pro vyrovnávací paměť, která by mohla obsahovat dekódovaný řetězec nSrcLen znaků.
Poznámky
Schéma kódování quoted-printable je popsáno v DOKUMENTU RFC 2045 (https://www.ietf.org/rfc/rfc2045.txt).
QPEncode
Voláním této funkce zakódujete data do formátu quoted-printable.
inline BOOL QPEncode(
BYTE* pbSrcData,
int nSrcLen,
LPSTR szDest,
int* pnDestLen,
DWORD dwFlags = 0) throw ();
Parametry
pbSrcData
Vyrovnávací paměť obsahující data, která se mají zakódovat.
nSrcLen
Délka v bajtech dat, která se mají zakódovat.
szDest
Vyrovnávací paměť přidělená volajícím pro příjem zakódovaných dat.
pnDestLen
Ukazatel na proměnnou, která obsahuje délku znaků szDest. Pokud je funkce úspěšná, proměnná obdrží počet znaků zapsaných do vyrovnávací paměti. Pokud funkce selže, proměnná obdrží požadovanou délku ve znacích vyrovnávací paměti.
dwFlags
ATLSMTP_QPENCODE příznaky popisující způsob provedení převodu.
ATLSMTP_QPENCODE_DOT Pokud se na začátku řádku zobrazí tečka, přidá se do výstupu a zakóduje se.
ATLSMTP_QPENCODE_TRAILING_SOFT připojí
=\r\n
k zakódovanému řetězci.
Schéma kódování quoted-printable je popsáno v DOKUMENTU RFC 2045.
Návratová hodnota
Vrátí hodnotu PRAVDA při úspěchu, NEPRAVDA při selhání.
Poznámky
Schéma kódování quoted-printable je popsáno v DOKUMENTU RFC 2045 (https://www.ietf.org/rfc/rfc2045.txt).
QPEncodeGetRequiredLength
Voláním této funkce získáte znakovou velikost vyrovnávací paměti, která by mohla obsahovat řetězec zakódovaný z dat zadané velikosti.
inline int QPEncodeGetRequiredLength(int nSrcLen) throw ();
Parametry
nSrcLen
Počet bajtů dat, které se mají zakódovat.
Návratová hodnota
Počet znaků požadovaných pro vyrovnávací paměť, která by mohla obsahovat zakódovaná data nSrcLen bajtů.
Poznámky
Schéma kódování quoted-printable je popsáno v DOKUMENTU RFC 2045 (https://www.ietf.org/rfc/rfc2045.txt).
UUDecode
Dekóduje řetězec dat, která byla uuenkódována, například předchozím voláním UUEncode.
inline BOOL UUDecode(
BYTE* pbSrcData,
int nSrcLen,
BYTE* pbDest,
int* pnDestLen) throw ();
Parametry
pbSrcData
Řetězec obsahující data, která mají být dekódována.
nSrcLen
Délka v bajtech pbSrcData.
pbDest
Vyrovnávací paměť přidělená volajícím pro příjem dekódovaných dat.
pnDestLen
Ukazatel na proměnnou, která obsahuje délku v bajtech pbDestu. Pokud je funkce úspěšná, proměnná přijme počet bajtů zapsaných do vyrovnávací paměti. Pokud funkce selže, proměnná obdrží požadovanou délku v bajtech vyrovnávací paměti.
Návratová hodnota
Vrátí hodnotu PRAVDA při úspěchu, NEPRAVDA při selhání.
Poznámky
Tato implementace uuencoding se řídí specifikací POSIX P1003.2b/D11.
UUDecodeGetRequiredLength
Voláním této funkce získáte bajtovou velikost vyrovnávací paměti, která by mohla obsahovat data dekódovaná z řetězce zadané délky zakódovaného do kódování UUENCODE.
inline int UUDecodeGetRequiredLength(int nSrcLen) throw ();
Parametry
nSrcLen
Počet znaků v zakódovaném řetězci.
Návratová hodnota
Počet bajtů vyžadovaných pro vyrovnávací paměť, která by mohla obsahovat dekódovaný řetězec nSrcLen znaků.
Poznámky
Tato implementace uuencoding se řídí specifikací POSIX P1003.2b/D11.
UUEncode
Voláním této funkce zakódujete data do kódování UUENCODE.
inline BOOL UUEncode(
const BYTE* pbSrcData,
int nSrcLen,
LPSTR szDest,
int* pnDestLen,
LPCTSTR lpszFile = _T("file"),
DWORD dwFlags = 0) throw ();
Parametry
pbSrcData
Vyrovnávací paměť obsahující data, která se mají zakódovat.
nSrcLen
Délka v bajtech dat, která se mají zakódovat.
szDest
Vyrovnávací paměť přidělená volajícím pro příjem zakódovaných dat.
pnDestLen
Ukazatel na proměnnou, která obsahuje délku znaků szDest. Pokud je funkce úspěšná, proměnná obdrží počet znaků zapsaných do vyrovnávací paměti. Pokud funkce selže, proměnná obdrží požadovanou délku ve znacích vyrovnávací paměti.
lpszFile
Soubor, který se má přidat do hlavičky při ATLSMTP_UUENCODE_HEADER je zadán v dwFlags.
dwFlags
Označuje řízení chování této funkce.
ATLSMTP_UUENCODE_HEADE Hlavička se zakóduje.
ATLSMTP_UUENCODE_END Konec bude kódován.
ATLSMTP_UUENCODE_DOT Bude provedeno vytváření obsahu dat.
Návratová hodnota
Vrátí hodnotu PRAVDA při úspěchu, NEPRAVDA při selhání.
Poznámky
Tato implementace uuencoding se řídí specifikací POSIX P1003.2b/D11.
UUEncodeGetRequiredLength
Voláním této funkce získáte znakovou velikost vyrovnávací paměti, která by mohla obsahovat řetězec zakódovaný z dat zadané velikosti.
inline int UUEncodeGetRequiredLength(int nSrcLen) throw ();
Parametry
nSrcLen
Počet bajtů dat, které se mají zakódovat.
Návratová hodnota
Počet znaků požadovaných pro vyrovnávací paměť, která by mohla obsahovat zakódovaná data nSrcLen bajtů.
Poznámky
Tato implementace uuencoding se řídí specifikací POSIX P1003.2b/D11.