Udostępnij za pośrednictwem


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.

Zobacz też

Pojęcia
Składniki ATL COM pulpitu