ATL 文字編碼函式
這些函式支援文字編碼和譯碼。
函式 | 描述 |
---|---|
AtlGetHexValue | 呼叫此函式可取得十六進位的數值。 |
AtlGetVersion | 呼叫此函式以取得您使用的 ATL 連結庫版本。 |
AtlHexDecode | 譯碼已編碼為十六進位文字的數據字串,例如先前對 AtlHexEncode 的呼叫。 |
AtlHexDecodeGetRequiredLength | 呼叫此函式可取得以位元組為單位的緩衝區大小,該緩衝區大小可包含從指定長度的十六進位編碼字串解碼的資料。 |
AtlHexEncode | 呼叫此函式可將一些資料編碼為十六進位文字字串。 |
AtlHexEncodeGetRequiredLength | 呼叫此函式可取得以字元為單位的緩衝區大小,該緩衝區大小可包含從指定大小的資料解碼的字串。 |
AtlHexValue | 呼叫此函式可取得十六進位的數值。 |
AtlUnicodeToUTF8 | 呼叫此函式可將 Unicode 字串轉換為 UTF-8。 |
BEncode | 呼叫此函式可使用 "B" 編碼方式轉換部分資料。 |
BEncodeGetRequiredLength | 呼叫此函式可取得以字元為單位的緩衝區大小,該緩衝區大小可包含從指定大小的資料解碼的字串。 |
EscapeXML | 呼叫此函式可將無法在 XML 中安全使用的字元轉換成安全的對等字元。 |
GetExtendedChars | 呼叫此函式可取得字串中的擴充字元數目。 |
IsExtendedChar | 呼叫此函式來找出指定的字元是否為擴充字元(小於 32、大於 126,而不是製表元、換行字元或歸位字元) |
QEncode | 呼叫此函式可使用 "Q" 編碼方式轉換部分資料。 |
QEncodeGetRequiredLength | 呼叫此函式可取得以字元為單位的緩衝區大小,該緩衝區大小可包含從指定大小的資料解碼的字串。 |
QPDecode | 譯碼以引號列印格式編碼的數據字串,例如先前對 QPEncode 的呼叫。 |
QPDecodeGetRequiredLength | 呼叫此函式可取得以位元組為單位的緩衝區大小,該緩衝區大小可包含從指定長度的加上引號可列印編碼字串解碼的資料。 |
QPEncode | 呼叫此函式可採用加上引號的可列印格式對一些資料進行編碼。 |
QPEncodeGetRequiredLength | 呼叫此函式可取得以字元為單位的緩衝區大小,該緩衝區大小可包含從指定大小的資料解碼的字串。 |
UUDecode | 譯碼 uuencode 的字串,例如先前對 UUEncode 的呼叫。 |
UUDecodeGetRequiredLength | 呼叫此函式可取得以位元組為單位的緩衝區大小,該緩衝區大小可包含從指定長度的 UUENCODE 編碼字串解碼的資料。 |
UUEncode | 呼叫此函式可對一些資料進行 UUENCODE 編碼。 |
UUEncodeGetRequiredLength | 呼叫此函式可取得以字元為單位的緩衝區大小,該緩衝區大小可包含從指定大小的資料解碼的字串。 |
需求
標頭: atlenc.h
AtlGetHexValue
呼叫此函式可取得十六進位的數值。
inline char AtlGetHexValue(char chIn) throw();
參數
下巴
十六進位字元 '0'-'9'、'A'-'F'或 'a'-'f'。
傳回值
解譯為十六進位數位之輸入字元的數值。 例如,『0』 的輸入會傳回值 0,而 『A' 的輸入會傳回值 10。 如果輸入字元不是十六進位數位,則此函式會傳回 -1。
AtlGetVersion
呼叫此函式以取得您使用的 ATL 連結庫版本。
ATLAPI_(DWORD) AtlGetVersion(void* pReserved);
參數
保存
保留指標。
傳回值
傳回您要編譯或執行之 ATL 連結庫版本的 DWORD 整數值。
範例
函式應該如下所示呼叫。
DWORD ver;
ver = AtlGetVersion(NULL);
需求
標頭: atlbase.h
AtlHexDecode
譯碼已編碼為十六進位文字的數據字串,例如先前對 AtlHexEncode 的呼叫。
inline BOOL AtlHexDecode(
LPCSTR pSrcData,
int nSrcLen,
LPBYTE pbDest,
int* pnDestLen) throw();
參數
pSrcData
包含要譯碼之數據的字串。
nSrcLen
pSrcData 的字元長度。
pbDest
呼叫端配置的緩衝區,以接收已譯碼的數據。
pnDestLen
包含 pbDest 位元組長度之變數的指標。 如果函式成功,變數會接收寫入緩衝區的位元元組數目。 如果函式失敗,變數會以位元組為單位接收緩衝區所需的長度。
傳回值
在成功時傳回 TRUE,失敗時傳回 FALSE。
AtlHexDecodeGetRequiredLength
呼叫此函式可取得以位元組為單位的緩衝區大小,該緩衝區大小可包含從指定長度的十六進位編碼字串解碼的資料。
inline int AtlHexDecodeGetRequiredLength(int nSrcLen) throw();
參數
nSrcLen
編碼字串中的字元數。
傳回值
緩衝區所需的位元組數目,該緩衝區可以保存 nSrcLen 字元的譯碼字串。
AtlHexEncode
呼叫此函式可將一些資料編碼為十六進位文字字串。
inline BOOL AtlHexEncode(
const BYTE * pbSrcData,
int nSrcLen,
LPSTR szDest,
int * pnDestLen) throw();
參數
pbSrcData
包含要編碼之數據的緩衝區。
nSrcLen
要編碼之數據的位元組長度。
szDest
呼叫端配置的緩衝區,以接收編碼的數據。
pnDestLen
變數的指標,其中包含 szDest 字元的長度。 如果函式成功,變數會接收寫入緩衝區的字元數。 如果函式失敗,變數會以緩衝區的字元接收所需的長度。
傳回值
在成功時傳回 TRUE,失敗時傳回 FALSE。
備註
源數據的每個位元組都會編碼為2個十六進位元。
AtlHexEncodeGetRequiredLength
呼叫此函式可取得以字元為單位的緩衝區大小,該緩衝區大小可包含從指定大小的資料解碼的字串。
inline int AtlHexEncodeGetRequiredLength(int nSrcLen) throw();
參數
nSrcLen
要編碼的數據位元組數目。
傳回值
緩衝區可以保存 nSrcLen 位元組編碼數據的緩衝區所需的字元數。
AtlHexValue
呼叫此函式可取得十六進位的數值。
inline short AtlHexValue(char chIn) throw();
參數
下巴
十六進位字元 '0'-'9'、'A'-'F'或 'a'-'f'。
傳回值
解譯為十六進位數位之輸入字元的數值。 例如,『0』 的輸入會傳回值 0,而 『A' 的輸入會傳回值 10。 如果輸入字元不是十六進位數位,則此函式會傳回 -1。
AtlUnicodeToUTF8
呼叫此函式可將 Unicode 字串轉換為 UTF-8。
ATL_NOINLINE inline int AtlUnicodeToUTF8(
LPCWSTR wszSrc,
int nSrc,
LPSTR szDest,
int nDest) throw();
參數
wszSrc
要轉換的 Unicode 字串
nSrc
Unicode 字串的字元長度。
szDest
呼叫端配置的緩衝區,以接收已轉換的字串。
nDest
緩衝區的位元組長度。
傳回值
傳回已轉換字串的字元數。
備註
若要判斷轉換字串所需的緩衝區大小,請呼叫此函式,針對 szDest 和 nDest 傳遞 0。
BEncode
呼叫此函式可使用 "B" 編碼方式轉換部分資料。
inline BOOL BEncode(
BYTE* pbSrcData,
int nSrcLen,
LPSTR szDest,
int* pnDestLen,
LPCSTR pszCharSet) throw();
參數
pbSrcData
包含要編碼之數據的緩衝區。
nSrcLen
要編碼之數據的位元組長度。
szDest
呼叫端配置的緩衝區,以接收編碼的數據。
pnDestLen
變數的指標,其中包含 szDest 字元的長度。 如果函式成功,變數會接收寫入緩衝區的字元數。 如果函式失敗,變數會以緩衝區的字元接收所需的長度。
pszCharSet
要用於轉換的字元集。
傳回值
在成功時傳回 TRUE,失敗時傳回 FALSE。
備註
RFC 2047 (https://www.ietf.org/rfc/rfc2047.txt) 會描述 「B」 編碼配置。
BEncodeGetRequiredLength
呼叫此函式可取得以字元為單位的緩衝區大小,該緩衝區大小可包含從指定大小的資料解碼的字串。
inline int BEncodeGetRequiredLength(int nSrcLen, int nCharsetLen) throw();
參數
nSrcLen
要編碼的數據位元組數目。
nCharsetLen
要用於轉換之字元集的字元長度。
傳回值
緩衝區可以保存 nSrcLen 位元組編碼數據的緩衝區所需的字元數。
備註
RFC 2047 (https://www.ietf.org/rfc/rfc2047.txt) 會描述 「B」 編碼配置。
EscapeXML
呼叫此函式可將無法在 XML 中安全使用的字元轉換成安全的對等字元。
inline int EscapeXML(
const wchar_t * szIn,
int nSrcLen,
wchar_t * szEsc,
int nDestLen,
DWORD dwFlags = ATL_ESC_FLAG_NONE) throw();
參數
szIn
要轉換的字串。
nSrclen
要轉換之字串的字元長度。
szEsc
呼叫端配置的緩衝區,以接收已轉換的字串。
nDestLen
呼叫端配置緩衝區的字元長度。
dwFlags
ATL_ESC 旗標,描述轉換的執行方式。
- ATL_ESC_FLAG_NONE預設行為。 引號和引號不會轉換。
- ATL_ESC_FLAG_ATTR引號與引號會分別轉換成
"
和'
。
傳回值
轉換字串的字元長度。
備註
這個函式所執行的可能轉換會顯示在資料表中:
來源 | Destination |
---|---|
< | < |
> | > |
& | & |
' | ' |
" | " |
GetExtendedChars
呼叫此函式可取得字串中的擴充字元數目。
inline int GetExtendedChars(LPCSTR szSrc, int nSrcLen) throw();
參數
szSrc
要分析的字串。
nSrcLen
以字元為單位的字串長度。
傳回值
傳回IsExtendedChar所決定之字串內找到的擴充字元數目。
IsExtendedChar
呼叫此函式來找出指定的字元是否為擴充字元(小於 32、大於 126,而不是製表元、換行字元或歸位字元)
inline int IsExtendedChar(char ch) throw();
參數
ch
要測試的字元
傳回值
如果擴充字元,則為TRUE,否則為 FALSE。
QEncode
呼叫此函式可使用 "Q" 編碼方式轉換部分資料。
inline BOOL QEncode(
BYTE* pbSrcData,
int nSrcLen,
LPSTR szDest,
int* pnDestLen,
LPCSTR pszCharSet,
int* pnNumEncoded = NULL) throw();
參數
pbSrcData
包含要編碼之數據的緩衝區。
nSrcLen
要編碼之數據的位元組長度。
szDest
呼叫端配置的緩衝區,以接收編碼的數據。
pnDestLen
變數的指標,其中包含 szDest 字元的長度。 如果函式成功,變數會接收寫入緩衝區的字元數。 如果函式失敗,變數會以緩衝區的字元接收所需的長度。
pszCharSet
要用於轉換的字元集。
pnNumEncoded
傳回之變數的指標包含必須轉換的不安全字元數。
傳回值
在成功時傳回 TRUE,失敗時傳回 FALSE。
備註
RFC 2047 (https://www.ietf.org/rfc/rfc2047.txt) 會描述 「Q」 編碼配置。
QEncodeGetRequiredLength
呼叫此函式可取得以字元為單位的緩衝區大小,該緩衝區大小可包含從指定大小的資料解碼的字串。
inline int QEncodeGetRequiredLength(int nSrcLen, int nCharsetLen) throw();
參數
nSrcLen
要編碼的數據位元組數目。
nCharsetLen
要用於轉換之字元集的字元長度。
傳回值
緩衝區可以保存 nSrcLen 位元組編碼數據的緩衝區所需的字元數。
備註
RFC 2047 (https://www.ietf.org/rfc/rfc2047.txt) 會描述 「Q」 編碼配置。
QPDecode
譯碼以引號列印格式編碼的數據字串,例如先前對 QPEncode 的呼叫。
inline BOOL QPDecode(
BYTE* pbSrcData,
int nSrcLen,
LPSTR szDest,
int* pnDestLen,
DWORD dwFlags = 0) throw();
參數
pbSrcData
[in]包含要譯碼之數據的緩衝區。
nSrcLen
[in]pbSrcData 的位元組長度。
szDest
[out]呼叫端配置的緩衝區,以接收已譯碼的數據。
pnDestLen
[out]變數的指標,其中包含 szDest 位元組的長度。 如果函式成功,變數會接收寫入緩衝區的位元元組數目。 如果函式失敗,變數會以位元組為單位接收緩衝區所需的長度。
dwFlags
[in]ATLSMTP_QPENCODE旗標,描述轉換的執行方式。
傳回值
在成功時傳回 TRUE,失敗時傳回 FALSE。
備註
引號可列印編碼配置會在 RFC 2045 (https://www.ietf.org/rfc/rfc2045.txt) 中描述。
QPDecodeGetRequiredLength
呼叫此函式可取得以位元組為單位的緩衝區大小,該緩衝區大小可包含從指定長度的加上引號可列印編碼字串解碼的資料。
inline int QPDecodeGetRequiredLength(int nSrcLen) throw();
參數
nSrcLen
編碼字串中的字元數。
傳回值
緩衝區所需的位元組數目,該緩衝區可以保存 nSrcLen 字元的譯碼字串。
備註
引號可列印編碼配置會在 RFC 2045 (https://www.ietf.org/rfc/rfc2045.txt) 中描述。
QPEncode
呼叫此函式可採用加上引號的可列印格式對一些資料進行編碼。
inline BOOL QPEncode(
BYTE* pbSrcData,
int nSrcLen,
LPSTR szDest,
int* pnDestLen,
DWORD dwFlags = 0) throw ();
參數
pbSrcData
包含要編碼之數據的緩衝區。
nSrcLen
要編碼之數據的位元組長度。
szDest
呼叫端配置的緩衝區,以接收編碼的數據。
pnDestLen
變數的指標,其中包含 szDest 字元的長度。 如果函式成功,變數會接收寫入緩衝區的字元數。 如果函式失敗,變數會以緩衝區的字元接收所需的長度。
dwFlags
ATLSMTP_QPENCODE旗標,描述轉換的執行方式。
ATLSMTP_QPENCODE_DOT如果句點出現在行首,則會將其新增至輸出以及編碼。
ATLSMTP_QPENCODE_TRAILING_SOFT附加
=\r\n
至編碼字串。
引號可列印編碼配置會在 RFC 2045 中描述。
傳回值
在成功時傳回 TRUE,失敗時傳回 FALSE。
備註
引號可列印編碼配置會在 RFC 2045 (https://www.ietf.org/rfc/rfc2045.txt) 中描述。
QPEncodeGetRequiredLength
呼叫此函式可取得以字元為單位的緩衝區大小,該緩衝區大小可包含從指定大小的資料解碼的字串。
inline int QPEncodeGetRequiredLength(int nSrcLen) throw ();
參數
nSrcLen
要編碼的數據位元組數目。
傳回值
緩衝區可以保存 nSrcLen 位元組編碼數據的緩衝區所需的字元數。
備註
引號可列印編碼配置會在 RFC 2045 (https://www.ietf.org/rfc/rfc2045.txt) 中描述。
UUDecode
譯碼 uuencode 的字串,例如先前對 UUEncode 的呼叫。
inline BOOL UUDecode(
BYTE* pbSrcData,
int nSrcLen,
BYTE* pbDest,
int* pnDestLen) throw ();
參數
pbSrcData
包含要譯碼之數據的字串。
nSrcLen
pbSrcData 的位元組長度。
pbDest
呼叫端配置的緩衝區,以接收已譯碼的數據。
pnDestLen
包含 pbDest 位元組長度之變數的指標。 如果函式成功,變數會接收寫入緩衝區的位元元組數目。 如果函式失敗,變數會以位元組為單位接收緩衝區所需的長度。
傳回值
在成功時傳回 TRUE,失敗時傳回 FALSE。
備註
此 uuencoding 實作遵循 POSIX P1003.2b/D11 規格。
UUDecodeGetRequiredLength
呼叫此函式可取得以位元組為單位的緩衝區大小,該緩衝區大小可包含從指定長度的 UUENCODE 編碼字串解碼的資料。
inline int UUDecodeGetRequiredLength(int nSrcLen) throw ();
參數
nSrcLen
編碼字串中的字元數。
傳回值
緩衝區所需的位元組數目,該緩衝區可以保存 nSrcLen 字元的譯碼字串。
備註
此 uuencoding 實作遵循 POSIX P1003.2b/D11 規格。
UUEncode
呼叫此函式可對一些資料進行 UUENCODE 編碼。
inline BOOL UUEncode(
const BYTE* pbSrcData,
int nSrcLen,
LPSTR szDest,
int* pnDestLen,
LPCTSTR lpszFile = _T("file"),
DWORD dwFlags = 0) throw ();
參數
pbSrcData
包含要編碼之數據的緩衝區。
nSrcLen
要編碼之數據的位元組長度。
szDest
呼叫端配置的緩衝區,以接收編碼的數據。
pnDestLen
變數的指標,其中包含 szDest 字元的長度。 如果函式成功,變數會接收寫入緩衝區的字元數。 如果函式失敗,變數會以緩衝區的字元接收所需的長度。
lpszFile
在 dwFlags 中指定ATLSMTP_UUENCODE_HEADER時,要新增至標頭的 檔案。
dwFlags
旗標,控制此函式的行為。
ATLSMTP_UUENCODE_HEADE標頭將會進行編碼。
ATLSMTP_UUENCODE_END結尾將會編碼。
ATLSMTP_UUENCODE_DOT數據填入將會執行。
傳回值
在成功時傳回 TRUE,失敗時傳回 FALSE。
備註
此 uuencoding 實作遵循 POSIX P1003.2b/D11 規格。
UUEncodeGetRequiredLength
呼叫此函式可取得以字元為單位的緩衝區大小,該緩衝區大小可包含從指定大小的資料解碼的字串。
inline int UUEncodeGetRequiredLength(int nSrcLen) throw ();
參數
nSrcLen
要編碼的數據位元組數目。
傳回值
緩衝區可以保存 nSrcLen 位元組編碼數據的緩衝區所需的字元數。
備註
此 uuencoding 實作遵循 POSIX P1003.2b/D11 規格。