Sdílet prostřednictvím


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.

Viz také

Koncepty
Desktopové komponenty ATL objektů COM