次の方法で共有


ATL テキスト エンコード関数

これらの関数では、テキストのエンコードとデコードがサポートされています。

関数 説明
AtlGetHexValue 16 進数の数値を取得します。
AtlGetVersion 使用している ATL ライブラリのバージョンを取得するには、この関数を呼び出します。
AtlHexDecode AtlHexEncode の前の呼び出しなどによって 16 進テキストとしてエンコードされているデータの文字列をデコードします。
AtlHexDecodeGetRequiredLength 指定した長さの 16 進エンコードされた文字列からデコードされたデータを格納できるバッファーのサイズを、バイト単位で取得します。
AtlHexEncode 一部のデータを 16 進テキストの文字列としてエンコードします。
AtlHexEncodeGetRequiredLength 指定したサイズのデータからエンコードされた文字列を格納できるバッファーのサイズを、文字数で取得します。
AtlHexValue 16 進数の数値を取得します。
AtlUnicodeToUTF8 Unicode 文字列を UTF-8 に変換します。
BEncode "B" エンコーディングを使用して一部のデータを変換します。
BEncodeGetRequiredLength 指定したサイズのデータからエンコードされた文字列を格納できるバッファーのサイズを、文字数で取得します。
EscapeXML XML での使用には安全でない文字を安全な文字に変換します。
GetExtendedChars 文字列に含まれる拡張文字の数を取得します。
IsExtendedChar 指定された文字が拡張文字 (31 以下、127 以上で、タブ、改行、キャリッジ リターン以外のもの) かどうかを判断するには、この関数を呼び出します。
QEncode "Q" エンコーディングを使用して一部のデータを変換します。
QEncodeGetRequiredLength 指定したサイズのデータからエンコードされた文字列を格納できるバッファーのサイズを、文字数で取得します。
QPDecode 前の QPEncode 呼び出しなどによって quoted-printable 形式にエンコードされたデータの文字列をデコードします。
QPDecodeGetRequiredLength quoted-printable にエンコードされた指定長の文字列からデコードされたデータを格納できるバッファーのサイズを、バイト単位で取得します。
QPEncode 一部のデータを quoted-printable 形式にエンコードします。
QPEncodeGetRequiredLength 指定したサイズのデータからエンコードされた文字列を格納できるバッファーのサイズを、文字数で取得します。
UUDecode 前の UUEncode 呼び出しなどによって uuencode されているデータの文字列をデコードします。
UUDecodeGetRequiredLength 指定した長さの uuencode された文字列からデコードされたデータを格納できるバッファーのサイズを、バイト単位で取得します。
UUEncode データを uuencode します。
UUEncodeGetRequiredLength 指定したサイズのデータからエンコードされた文字列を格納できるバッファーのサイズを、文字数で取得します。

要件

ヘッダー: atlenc.h

AtlGetHexValue

16 進数の数値を取得します。

inline char AtlGetHexValue(char chIn) throw();

パラメーター

chIn
16 進文字 '0' から '9'、'A' から 'F'、または 'a' から 'f'。

戻り値

16 進数字として解釈される入力文字の数値。 たとえば、入力が '0' の場合は 0 の値が返され、入力が 'A' の場合は 10 の値が返されます。 入力文字が 16 進数字ではない場合、この関数によって -1 が返されます。

AtlGetVersion

使用している ATL ライブラリのバージョンを取得するには、この関数を呼び出します。

ATLAPI_(DWORD) AtlGetVersion(void* pReserved);

パラメーター

pReserved
予約されたポインター。

戻り値

コンパイルまたは実行している ATL ライブラリのバージョンの DWORD 整数値を返します。

関数は次のように呼び出す必要があります。

DWORD ver;
ver = AtlGetVersion(NULL);   

要件

ヘッダー: atlbase.h

AtlHexDecode

AtlHexEncode の前の呼び出しなどによって 16 進テキストとしてエンコードされているデータの文字列をデコードします。

inline BOOL AtlHexDecode(
   LPCSTR pSrcData,
   int nSrcLen,
   LPBYTE pbDest,
   int* pnDestLen) throw();

パラメーター

pSrcData
デコードするデータを含む文字列。

nSrcLen
pSrcData の長さ (文字数)。

pbDest
デコードされたデータを受け取る呼び出し元によって割り当てられたバッファー。

pnDestLen
pbDest の長さ (バイト単位) を含む変数へのポインター。 関数が成功すると、変数ではバッファーに書き込まれたバイトの数を受け取ります。 関数が失敗した場合、変数ではバッファーの必要な長さ (バイト単位) を受け取ります。

戻り値

成功した場合は TRUE を返し、失敗した場合は FALSE を返します。

AtlHexDecodeGetRequiredLength

指定した長さの 16 進エンコードされた文字列からデコードされたデータを格納できるバッファーのサイズを、バイト単位で取得します。

inline int AtlHexDecodeGetRequiredLength(int nSrcLen) throw();

パラメーター

nSrcLen
エンコードされた文字列内の文字数。

戻り値

nSrcLen 文字のデコードされた文字列を保持できるバッファーに必要なバイト数。

AtlHexEncode

一部のデータを 16 進テキストの文字列としてエンコードします。

inline BOOL AtlHexEncode(
   const BYTE * pbSrcData,
   int nSrcLen,
   LPSTR szDest,
int * pnDestLen) throw();

パラメーター

pbSrcData
エンコードするデータを含むバッファー。

nSrcLen
エンコードするデータの長さ (バイト単位)。

szDest
エンコードされたデータを受け取る呼び出し元によって割り当てられたバッファー。

pnDestLen
szDest の長さ (文字数) を含む変数へのポインター。 関数が成功すると、変数ではバッファーに書き込まれた文字の数を受け取ります。 関数が失敗した場合、変数ではバッファーの必要な長さ (文字数) を受け取ります。

戻り値

成功した場合は TRUE を返し、失敗した場合は FALSE を返します。

解説

ソース データの各バイトは、2 つの 16 進文字としてエンコードされます。

AtlHexEncodeGetRequiredLength

指定したサイズのデータからエンコードされた文字列を格納できるバッファーのサイズを、文字数で取得します。

inline int AtlHexEncodeGetRequiredLength(int nSrcLen) throw();

パラメーター

nSrcLen
エンコードするデータのバイト数。

戻り値

nSrcLen バイトのエンコードされたデータを保持できるバッファーに必要な文字数。

AtlHexValue

16 進数の数値を取得します。

inline short AtlHexValue(char chIn) throw();

パラメーター

chIn
16 進文字 '0' から '9'、'A' から 'F'、または 'a' から 'f'。

戻り値

16 進数字として解釈される入力文字の数値。 たとえば、入力が '0' の場合は 0 の値が返され、入力が 'A' の場合は 10 の値が返されます。 入力文字が 16 進数字ではない場合、この関数によって -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
バッファーの長さ (バイト単位)。

戻り値

変換された文字列の文字数を返します。

解説

変換された文字列に必要なバッファーのサイズを確認するには、szDestnDest に 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 を返します。

解説

"B" エンコード スキームについては、RFC 2047 (https://www.ietf.org/rfc/rfc2047.txt) で説明されています。

BEncodeGetRequiredLength

指定したサイズのデータからエンコードされた文字列を格納できるバッファーのサイズを、文字数で取得します。

inline int BEncodeGetRequiredLength(int nSrcLen, int nCharsetLen) throw();

パラメーター

nSrcLen
エンコードするデータのバイト数。

nCharsetLen
変換に使用する文字セットの長さ (文字数)。

戻り値

nSrcLen バイトのエンコードされたデータを保持できるバッファーに必要な文字数。

解説

"B" エンコード スキームについては、RFC 2047 (https://www.ietf.org/rfc/rfc2047.txt) で説明されています。

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

指定された文字が拡張文字 (31 以下、127 以上で、タブ、改行、キャリッジ リターン以外のもの) かどうかを判断するには、この関数を呼び出します。

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 を返します。

解説

"Q" エンコード スキームについては、RFC 2047 (https://www.ietf.org/rfc/rfc2047.txt) で説明されています。

QEncodeGetRequiredLength

指定したサイズのデータからエンコードされた文字列を格納できるバッファーのサイズを、文字数で取得します。

inline int QEncodeGetRequiredLength(int nSrcLen, int nCharsetLen) throw();

パラメーター

nSrcLen
エンコードするデータのバイト数。

nCharsetLen
変換に使用する文字セットの長さ (文字数)。

戻り値

nSrcLen バイトのエンコードされたデータを保持できるバッファーに必要な文字数。

解説

"Q" エンコード スキームについては、RFC 2047 (https://www.ietf.org/rfc/rfc2047.txt) で説明されています。

QPDecode

前の QPEncode 呼び出しなどによって quoted-printable 形式にエンコードされたデータの文字列をデコードします。

inline BOOL QPDecode(
   BYTE* pbSrcData,
   int nSrcLen,
   LPSTR szDest,
   int* pnDestLen,
   DWORD dwFlags = 0) throw();

パラメーター

pbSrcData
[入力] デコードされるデータを含むバッファー。

nSrcLen
[入力] pbSrcData の長さ (バイト単位)。

szDest
[出力] デコードされたデータを受け取る呼び出し元によって割り当てられたバッファー。

pnDestLen
[出力] szDest の長さ (バイト単位) を含む変数へのポインター。 関数が成功すると、変数ではバッファーに書き込まれたバイトの数を受け取ります。 関数が失敗した場合、変数ではバッファーの必要な長さ (バイト単位) を受け取ります。

dwFlags
[入力] 変換の実行方法を記述する ATLSMTP_QPENCODE フラグ。

戻り値

成功した場合は TRUE を返し、失敗した場合は FALSE を返します。

解説

quoted-printable エンコード スキームについては、RFC 2045 (https://www.ietf.org/rfc/rfc2045.txt) で説明されています。

QPDecodeGetRequiredLength

quoted-printable にエンコードされた指定長の文字列からデコードされたデータを格納できるバッファーのサイズを、バイト単位で取得します。

inline int QPDecodeGetRequiredLength(int nSrcLen) throw();

パラメーター

nSrcLen
エンコードされた文字列内の文字数。

戻り値

nSrcLen 文字のデコードされた文字列を保持できるバッファーに必要なバイト数。

解説

quoted-printable エンコード スキームについては、RFC 2045 (https://www.ietf.org/rfc/rfc2045.txt) で説明されています。

QPEncode

一部のデータを quoted-printable 形式にエンコードします。

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 を追加します。

quoted-printable エンコード スキームについては、RFC 2045 で説明されています。

戻り値

成功した場合は TRUE を返し、失敗した場合は FALSE を返します。

解説

quoted-printable エンコード スキームについては、RFC 2045 (https://www.ietf.org/rfc/rfc2045.txt) で説明されています。

QPEncodeGetRequiredLength

指定したサイズのデータからエンコードされた文字列を格納できるバッファーのサイズを、文字数で取得します。

inline int QPEncodeGetRequiredLength(int nSrcLen) throw ();

パラメーター

nSrcLen
エンコードするデータのバイト数。

戻り値

nSrcLen バイトのエンコードされたデータを保持できるバッファーに必要な文字数。

解説

quoted-printable エンコード スキームについては、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
ATLSMTP_UUENCODE_HEADER が dwFlags で指定されている場合にヘッダーに追加されるファイル。

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 仕様に従います。

関連項目

概念
ATL COM デスクトップ コンポーネント