Funkcje kodowania tekstu ATL
Te funkcje obsługują kodowanie tekstu i dekodowanie.
Function | opis |
---|---|
AtlGetHexValue | Wywołaj tę funkcję, aby uzyskać wartość liczbową z liczby szesnastkowej. |
AtlGetVersion | Wywołaj tę funkcję, aby uzyskać wersję używanej biblioteki ATL. |
AtlHexDecode | Dekoduje ciąg danych zakodowany jako tekst szesnastkowy, taki jak poprzednie wywołanie metody AtlHexEncode. |
AtlHexDecodeGetRequiredLength | Wywołaj tę funkcję, aby uzyskać rozmiar (w bajtach) bufora, który może zawierać dane zdekodowane z ciągu zakodowanego szesnastkowo o określonej długości. |
AtlHexEncode | Wywołaj tę funkcję, aby zakodować dane jako ciąg tekstu szesnastkowego. |
AtlHexEncodeGetRequiredLength | Wywołaj tę funkcję, aby uzyskać rozmiar (w znakach) bufora, który może zawierać ciąg zakodowany z danych o określonej długości. |
AtlHexValue | Wywołaj tę funkcję, aby uzyskać wartość liczbową z liczby szesnastkowej. |
AtlUnicodeToUTF8 | Wywołaj tę funkcję, aby przekonwertować ciąg Unicode na UTF-8. |
Kod BEncode | Wywołaj tę funkcję, aby skonwertować dane przy użyciu kodowania „B”. |
BEncodeGetRequiredLength | Wywołaj tę funkcję, aby uzyskać rozmiar (w znakach) bufora, który może zawierać ciąg zakodowany z danych o określonej długości. |
EscapeXML | Wywołaj tę funkcję, aby skonwertować znaki niebezpieczne w XML na ich bezpieczne odpowiedniki. |
GetExtendedChars | Wywołaj tę funkcję, aby uzyskać liczbę znaków rozszerzonych w ciągu. |
IsExtendedChar | Wywołaj tę funkcję, aby dowiedzieć się, czy dany znak jest znakiem rozszerzonym (mniejszym niż 32, większym niż 126, a nie tabulatorem, wsuwem wiersza lub powrotem karetki) |
QEncode | Wywołaj tę funkcję, aby skonwertować dane przy użyciu kodowania „Q”. |
QEncodeGetRequiredLength | Wywołaj tę funkcję, aby uzyskać rozmiar (w znakach) bufora, który może zawierać ciąg zakodowany z danych o określonej długości. |
Kod QPDecode | Dekoduje ciąg danych zakodowany w formacie cytowanym do drukowania, takim jak poprzednie wywołanie funkcji QPEncode. |
QPDecodeGetRequiredLength | Wywołaj tę funkcję, aby uzyskać rozmiar (w bajtach) bufora, który może zawierać dane zdekodowane z ciągu zakodowanego w quoted-printable o określonej długości. |
Kod QPEncode | Wywołaj tę funkcję, aby zakodować dane w formacie quoted-printable. |
QPEncodeGetRequiredLength | Wywołaj tę funkcję, aby uzyskać rozmiar (w znakach) bufora, który może zawierać ciąg zakodowany z danych o określonej długości. |
UUDecode | Dekoduje ciąg danych, który został zakodowany w uucode, na przykład przez poprzednie wywołanie funkcji UUEncode. |
UUDecodeGetRequiredLength | Wywołaj tę funkcję, aby uzyskać rozmiar (w bajtach) bufora, który może zawierać dane zdekodowane z ciągu zakodowanego w uuencode o określonej długości. |
UUEncode | Wywołaj tę funkcję, aby zakodować dane w uuencode. |
UUEncodeGetRequiredLength | Wywołaj tę funkcję, aby uzyskać rozmiar (w znakach) bufora, który może zawierać ciąg zakodowany z danych o określonej długości. |
Wymagania
Nagłówek: atlenc.h
AtlGetHexValue
Wywołaj tę funkcję, aby uzyskać wartość liczbową z liczby szesnastkowej.
inline char AtlGetHexValue(char chIn) throw();
Parametry
podbródek
Znak szesnastkowy "0"-"9", "A"-"F" lub "a"-"f".
Wartość zwracana
Wartość liczbowa znaku wejściowego interpretowana jako cyfra szesnastkowa. Na przykład dane wejściowe "0" zwracają wartość 0, a wartość wejściowa "A" zwraca wartość 10. Jeśli znak wejściowy nie jest cyfrą szesnastkową, ta funkcja zwraca wartość -1.
AtlGetVersion
Wywołaj tę funkcję, aby uzyskać wersję używanej biblioteki ATL.
ATLAPI_(DWORD) AtlGetVersion(void* pReserved);
Parametry
Zachowane
Zarezerwowany wskaźnik.
Wartość zwracana
Zwraca wartość całkowitą DWORD wersji biblioteki ATL, którą kompilujesz lub uruchamiasz.
Przykład
Funkcja powinna być wywoływana w następujący sposób.
DWORD ver;
ver = AtlGetVersion(NULL);
Wymagania
Nagłówek: atlbase.h
AtlHexDecode
Dekoduje ciąg danych zakodowany jako tekst szesnastkowy, taki jak poprzednie wywołanie metody AtlHexEncode.
inline BOOL AtlHexDecode(
LPCSTR pSrcData,
int nSrcLen,
LPBYTE pbDest,
int* pnDestLen) throw();
Parametry
pSrcData
Ciąg zawierający dane do dekodowania.
nSrcLen
Długość znaków pSrcData.
pbDest
Bufor przydzielony przez obiekt wywołujący do odbierania zdekodowanych danych.
pnDestLen
Wskaźnik do zmiennej, która zawiera długość w bajtach pbDest. Jeśli funkcja powiedzie się, zmienna otrzyma liczbę bajtów zapisanych w buforze. Jeśli funkcja ulegnie awarii, zmienna otrzyma wymaganą długość w bajtach buforu.
Wartość zwracana
Zwraca wartość TRUE w przypadku powodzenia, FALSE w przypadku niepowodzenia.
AtlHexDecodeGetRequiredLength
Wywołaj tę funkcję, aby uzyskać rozmiar (w bajtach) bufora, który może zawierać dane zdekodowane z ciągu zakodowanego szesnastkowo o określonej długości.
inline int AtlHexDecodeGetRequiredLength(int nSrcLen) throw();
Parametry
nSrcLen
Liczba znaków w zakodowanym ciągu.
Wartość zwracana
Liczba bajtów wymaganych dla buforu, który może przechowywać zdekodowany ciąg znaków nSrcLen .
AtlHexEncode
Wywołaj tę funkcję, aby zakodować dane jako ciąg tekstu szesnastkowego.
inline BOOL AtlHexEncode(
const BYTE * pbSrcData,
int nSrcLen,
LPSTR szDest,
int * pnDestLen) throw();
Parametry
pbSrcData
Bufor zawierający dane do zakodowania.
nSrcLen
Długość w bajtach danych do zakodowania.
szDest
Bufor przydzielony przez obiekt wywołujący do odbierania zakodowanych danych.
pnDestLen
Wskaźnik do zmiennej zawierającej długość znaków szDest. Jeśli funkcja powiedzie się, zmienna otrzyma liczbę znaków zapisanych w buforze. Jeśli funkcja ulegnie awarii, zmienna otrzyma wymaganą długość w znakach buforu.
Wartość zwracana
Zwraca wartość TRUE w przypadku powodzenia, FALSE w przypadku niepowodzenia.
Uwagi
Każdy bajt danych źródłowych jest zakodowany jako 2 znaki szesnastkowe.
AtlHexEncodeGetRequiredLength
Wywołaj tę funkcję, aby uzyskać rozmiar (w znakach) bufora, który może zawierać ciąg zakodowany z danych o określonej długości.
inline int AtlHexEncodeGetRequiredLength(int nSrcLen) throw();
Parametry
nSrcLen
Liczba bajtów danych do zakodowania.
Wartość zwracana
Liczba znaków wymaganych dla buforu, który może przechowywać zakodowane dane nSrcLen bajtów.
AtlHexValue
Wywołaj tę funkcję, aby uzyskać wartość liczbową z liczby szesnastkowej.
inline short AtlHexValue(char chIn) throw();
Parametry
podbródek
Znak szesnastkowy "0"-"9", "A"-"F" lub "a"-"f".
Wartość zwracana
Wartość liczbowa znaku wejściowego interpretowana jako cyfra szesnastkowa. Na przykład dane wejściowe "0" zwracają wartość 0, a wartość wejściowa "A" zwraca wartość 10. Jeśli znak wejściowy nie jest cyfrą szesnastkową, ta funkcja zwraca wartość -1.
AtlUnicodeToUTF8
Wywołaj tę funkcję, aby przekonwertować ciąg Unicode na UTF-8.
ATL_NOINLINE inline int AtlUnicodeToUTF8(
LPCWSTR wszSrc,
int nSrc,
LPSTR szDest,
int nDest) throw();
Parametry
wszSrc
Ciąg Unicode do przekonwertowania
nSrc
Długość znaków ciągu Unicode.
szDest
Bufor przydzielony przez obiekt wywołujący do odbierania przekonwertowanego ciągu.
nDest
Długość w bajtach buforu.
Wartość zwracana
Zwraca liczbę znaków przekonwertowanego ciągu.
Uwagi
Aby określić rozmiar buforu wymaganego dla przekonwertowanego ciągu, wywołaj tę funkcję przekazującą wartość 0 dla wartości szDest i nDest.
Kod BEncode
Wywołaj tę funkcję, aby skonwertować dane przy użyciu kodowania „B”.
inline BOOL BEncode(
BYTE* pbSrcData,
int nSrcLen,
LPSTR szDest,
int* pnDestLen,
LPCSTR pszCharSet) throw();
Parametry
pbSrcData
Bufor zawierający dane do zakodowania.
nSrcLen
Długość w bajtach danych do zakodowania.
szDest
Bufor przydzielony przez obiekt wywołujący do odbierania zakodowanych danych.
pnDestLen
Wskaźnik do zmiennej zawierającej długość znaków szDest. Jeśli funkcja powiedzie się, zmienna otrzyma liczbę znaków zapisanych w buforze. Jeśli funkcja ulegnie awarii, zmienna otrzyma wymaganą długość w znakach buforu.
pszCharSet
Zestaw znaków używany do konwersji.
Wartość zwracana
Zwraca wartość TRUE w przypadku powodzenia, FALSE w przypadku niepowodzenia.
Uwagi
Schemat kodowania "B" został opisany w specyfikacji RFC 2047 (https://www.ietf.org/rfc/rfc2047.txt).
BEncodeGetRequiredLength
Wywołaj tę funkcję, aby uzyskać rozmiar (w znakach) bufora, który może zawierać ciąg zakodowany z danych o określonej długości.
inline int BEncodeGetRequiredLength(int nSrcLen, int nCharsetLen) throw();
Parametry
nSrcLen
Liczba bajtów danych do zakodowania.
nCharsetLen
Długość znaków zestawu znaków do użycia na potrzeby konwersji.
Wartość zwracana
Liczba znaków wymaganych dla buforu, który może przechowywać zakodowane dane nSrcLen bajtów.
Uwagi
Schemat kodowania "B" został opisany w specyfikacji RFC 2047 (https://www.ietf.org/rfc/rfc2047.txt).
EscapeXML
Wywołaj tę funkcję, aby skonwertować znaki niebezpieczne w XML na ich bezpieczne odpowiedniki.
inline int EscapeXML(
const wchar_t * szIn,
int nSrcLen,
wchar_t * szEsc,
int nDestLen,
DWORD dwFlags = ATL_ESC_FLAG_NONE) throw();
Parametry
szIn
Ciąg do przekonwertowania.
nSrclen
Długość znaków ciągu do przekonwertowania.
szEsc
Bufor przydzielony przez obiekt wywołujący do odbierania przekonwertowanego ciągu.
nDestLen
Długość znaków buforu przydzielonego przez obiekt wywołujący.
dwFlags
ATL_ESC Flagi opisujące sposób wykonywania konwersji.
- ATL_ESC_FLAG_NONE zachowanie domyślne. Znaki cudzysłowu i apostrofy nie są konwertowane.
- ATL_ESC_FLAG_ATTR znaki cudzysłowu i apostrofy są konwertowane odpowiednio na
"
i'
.
Wartość zwracana
Długość znaków przekonwertowanego ciągu.
Uwagi
Możliwe konwersje wykonywane przez tę funkcję są wyświetlane w tabeli:
Element źródłowy | Element docelowy |
---|---|
< | < |
> | > |
& | & |
' | ' |
" | " |
GetExtendedChars
Wywołaj tę funkcję, aby uzyskać liczbę znaków rozszerzonych w ciągu.
inline int GetExtendedChars(LPCSTR szSrc, int nSrcLen) throw();
Parametry
szSrc
Ciąg do przeanalizowania.
nSrcLen
Długość ciągu w znakach.
Wartość zwracana
Zwraca liczbę znaków rozszerzonych znalezionych w ciągu określonym przez IsExtendedChar.
IsExtendedChar
Wywołaj tę funkcję, aby dowiedzieć się, czy dany znak jest znakiem rozszerzonym (mniejszym niż 32, większym niż 126, a nie tabulatorem, wsuwem wiersza lub powrotem karetki)
inline int IsExtendedChar(char ch) throw();
Parametry
Ch
Znak do przetestowania
Wartość zwracana
WARTOŚĆ TRUE, jeśli znak jest rozszerzony, w przeciwnym razie wartość FALSE.
QEncode
Wywołaj tę funkcję, aby skonwertować dane przy użyciu kodowania „Q”.
inline BOOL QEncode(
BYTE* pbSrcData,
int nSrcLen,
LPSTR szDest,
int* pnDestLen,
LPCSTR pszCharSet,
int* pnNumEncoded = NULL) throw();
Parametry
pbSrcData
Bufor zawierający dane do zakodowania.
nSrcLen
Długość w bajtach danych do zakodowania.
szDest
Bufor przydzielony przez obiekt wywołujący do odbierania zakodowanych danych.
pnDestLen
Wskaźnik do zmiennej zawierającej długość znaków szDest. Jeśli funkcja powiedzie się, zmienna otrzyma liczbę znaków zapisanych w buforze. Jeśli funkcja ulegnie awarii, zmienna otrzyma wymaganą długość w znakach buforu.
pszCharSet
Zestaw znaków używany do konwersji.
pnNumEncoded
Wskaźnik do zmiennej, która po powrocie zawiera liczbę niebezpiecznych znaków, które musiały zostać przekonwertowane.
Wartość zwracana
Zwraca wartość TRUE w przypadku powodzenia, FALSE w przypadku niepowodzenia.
Uwagi
Schemat kodowania "Q" został opisany w specyfikacji RFC 2047 (https://www.ietf.org/rfc/rfc2047.txt).
QEncodeGetRequiredLength
Wywołaj tę funkcję, aby uzyskać rozmiar (w znakach) bufora, który może zawierać ciąg zakodowany z danych o określonej długości.
inline int QEncodeGetRequiredLength(int nSrcLen, int nCharsetLen) throw();
Parametry
nSrcLen
Liczba bajtów danych do zakodowania.
nCharsetLen
Długość znaków zestawu znaków do użycia na potrzeby konwersji.
Wartość zwracana
Liczba znaków wymaganych dla buforu, który może przechowywać zakodowane dane nSrcLen bajtów.
Uwagi
Schemat kodowania "Q" został opisany w specyfikacji RFC 2047 (https://www.ietf.org/rfc/rfc2047.txt).
Kod QPDecode
Dekoduje ciąg danych zakodowany w formacie cytowanym do drukowania, takim jak poprzednie wywołanie funkcji QPEncode.
inline BOOL QPDecode(
BYTE* pbSrcData,
int nSrcLen,
LPSTR szDest,
int* pnDestLen,
DWORD dwFlags = 0) throw();
Parametry
pbSrcData
[in] Bufor zawierający dane do dekodowania.
nSrcLen
[in] Długość w bajtach pbSrcData.
szDest
[out] Bufor przydzielony przez obiekt wywołujący do odbierania zdekodowanych danych.
pnDestLen
[out] Wskaźnik do zmiennej, która zawiera długość w bajtach szDest. Jeśli funkcja powiedzie się, zmienna otrzyma liczbę bajtów zapisanych w buforze. Jeśli funkcja ulegnie awarii, zmienna otrzyma wymaganą długość w bajtach buforu.
dwFlags
[in] ATLSMTP_QPENCODE flag opisujących sposób wykonywania konwersji.
Wartość zwracana
Zwraca wartość TRUE w przypadku powodzenia, FALSE w przypadku niepowodzenia.
Uwagi
Schemat kodowania drukowalny cytowany jest opisany w artykule RFC 2045 (https://www.ietf.org/rfc/rfc2045.txt).
QPDecodeGetRequiredLength
Wywołaj tę funkcję, aby uzyskać rozmiar (w bajtach) bufora, który może zawierać dane zdekodowane z ciągu zakodowanego w quoted-printable o określonej długości.
inline int QPDecodeGetRequiredLength(int nSrcLen) throw();
Parametry
nSrcLen
Liczba znaków w zakodowanym ciągu.
Wartość zwracana
Liczba bajtów wymaganych dla buforu, który może przechowywać zdekodowany ciąg znaków nSrcLen .
Uwagi
Schemat kodowania drukowalny cytowany jest opisany w artykule RFC 2045 (https://www.ietf.org/rfc/rfc2045.txt).
Kod QPEncode
Wywołaj tę funkcję, aby zakodować dane w formacie quoted-printable.
inline BOOL QPEncode(
BYTE* pbSrcData,
int nSrcLen,
LPSTR szDest,
int* pnDestLen,
DWORD dwFlags = 0) throw ();
Parametry
pbSrcData
Bufor zawierający dane do zakodowania.
nSrcLen
Długość w bajtach danych do zakodowania.
szDest
Bufor przydzielony przez obiekt wywołujący do odbierania zakodowanych danych.
pnDestLen
Wskaźnik do zmiennej zawierającej długość znaków szDest. Jeśli funkcja powiedzie się, zmienna otrzyma liczbę znaków zapisanych w buforze. Jeśli funkcja ulegnie awarii, zmienna otrzyma wymaganą długość w znakach buforu.
dwFlags
ATLSMTP_QPENCODE flag opisujących sposób wykonywania konwersji.
ATLSMTP_QPENCODE_DOT Jeśli kropka pojawia się na początku wiersza, zostanie ona dodana do danych wyjściowych, a także zakodowana.
ATLSMTP_QPENCODE_TRAILING_SOFT Dołącza
=\r\n
do zakodowanego ciągu.
Schemat kodowania z możliwością drukowania cytowanego został opisany w artykule RFC 2045.
Wartość zwracana
Zwraca wartość TRUE w przypadku powodzenia, FALSE w przypadku niepowodzenia.
Uwagi
Schemat kodowania drukowalny cytowany jest opisany w artykule RFC 2045 (https://www.ietf.org/rfc/rfc2045.txt).
QPEncodeGetRequiredLength
Wywołaj tę funkcję, aby uzyskać rozmiar (w znakach) bufora, który może zawierać ciąg zakodowany z danych o określonej długości.
inline int QPEncodeGetRequiredLength(int nSrcLen) throw ();
Parametry
nSrcLen
Liczba bajtów danych do zakodowania.
Wartość zwracana
Liczba znaków wymaganych dla buforu, który może przechowywać zakodowane dane nSrcLen bajtów.
Uwagi
Schemat kodowania drukowalny cytowany jest opisany w artykule RFC 2045 (https://www.ietf.org/rfc/rfc2045.txt).
UUDecode
Dekoduje ciąg danych, który został zakodowany w uucode, na przykład przez poprzednie wywołanie funkcji UUEncode.
inline BOOL UUDecode(
BYTE* pbSrcData,
int nSrcLen,
BYTE* pbDest,
int* pnDestLen) throw ();
Parametry
pbSrcData
Ciąg zawierający dane do dekodowania.
nSrcLen
Długość w bajtach pbSrcData.
pbDest
Bufor przydzielony przez obiekt wywołujący do odbierania zdekodowanych danych.
pnDestLen
Wskaźnik do zmiennej, która zawiera długość w bajtach pbDest. Jeśli funkcja powiedzie się, zmienna otrzyma liczbę bajtów zapisanych w buforze. Jeśli funkcja ulegnie awarii, zmienna otrzyma wymaganą długość w bajtach buforu.
Wartość zwracana
Zwraca wartość TRUE w przypadku powodzenia, FALSE w przypadku niepowodzenia.
Uwagi
Ta implementacja uuencoding jest zgodna ze specyfikacją POSIX P1003.2b/D11.
UUDecodeGetRequiredLength
Wywołaj tę funkcję, aby uzyskać rozmiar (w bajtach) bufora, który może zawierać dane zdekodowane z ciągu zakodowanego w uuencode o określonej długości.
inline int UUDecodeGetRequiredLength(int nSrcLen) throw ();
Parametry
nSrcLen
Liczba znaków w zakodowanym ciągu.
Wartość zwracana
Liczba bajtów wymaganych dla buforu, który może przechowywać zdekodowany ciąg znaków nSrcLen .
Uwagi
Ta implementacja uuencoding jest zgodna ze specyfikacją POSIX P1003.2b/D11.
UUEncode
Wywołaj tę funkcję, aby zakodować dane w uuencode.
inline BOOL UUEncode(
const BYTE* pbSrcData,
int nSrcLen,
LPSTR szDest,
int* pnDestLen,
LPCTSTR lpszFile = _T("file"),
DWORD dwFlags = 0) throw ();
Parametry
pbSrcData
Bufor zawierający dane do zakodowania.
nSrcLen
Długość w bajtach danych do zakodowania.
szDest
Bufor przydzielony przez obiekt wywołujący do odbierania zakodowanych danych.
pnDestLen
Wskaźnik do zmiennej zawierającej długość znaków szDest. Jeśli funkcja powiedzie się, zmienna otrzyma liczbę znaków zapisanych w buforze. Jeśli funkcja ulegnie awarii, zmienna otrzyma wymaganą długość w znakach buforu.
lpszFile
Plik, który ma zostać dodany do nagłówka, gdy ATLSMTP_UUENCODE_HEADER jest określony w pliku dwFlags.
dwFlags
Flagi kontrolujące zachowanie tej funkcji.
ATLSMTP_UUENCODE_HEADE Nagłówek zostanie zakodowany.
ATLSMTP_UUENCODE_END Koniec zostanie zakodowany.
ATLSMTP_UUENCODE_DOT zostaną wykonane wypychanie danych.
Wartość zwracana
Zwraca wartość TRUE w przypadku powodzenia, FALSE w przypadku niepowodzenia.
Uwagi
Ta implementacja uuencoding jest zgodna ze specyfikacją POSIX P1003.2b/D11.
UUEncodeGetRequiredLength
Wywołaj tę funkcję, aby uzyskać rozmiar (w znakach) bufora, który może zawierać ciąg zakodowany z danych o określonej długości.
inline int UUEncodeGetRequiredLength(int nSrcLen) throw ();
Parametry
nSrcLen
Liczba bajtów danych do zakodowania.
Wartość zwracana
Liczba znaków wymaganych dla buforu, który może przechowywać zakodowane dane nSrcLen bajtów.
Uwagi
Ta implementacja uuencoding jest zgodna ze specyfikacją POSIX P1003.2b/D11.