Sample code for 30+ languages & platforms
Unicode C

MIME Header Q and B Encoding and Decoding

See more Encryption Examples

Demonstrates how to Q and B encode/decode.

Chilkat Unicode C Downloads

Unicode C
#include <C_CkStringBuilderW.h>

void ChilkatSample(void)
    {
    BOOL success;
    HCkStringBuilderW sb;
    HCkStringBuilderW sb2;

    success = FALSE;

    sb = CkStringBuilderW_Create();

    CkStringBuilderW_Append(sb,L"This is a test");

    wprintf(L"%s\n",CkStringBuilderW_getEncoded(sb,L"B",L"utf-8"));
    // output is:
    // =?utf-8?B?VGhpcyBpcyBhIHRlc3Q=?=

    wprintf(L"%s\n",CkStringBuilderW_getEncoded(sb,L"Q",L"iso-8859-1"));
    // output is:
    // =?utf-8?Q?This_is_a_test?=

    sb2 = CkStringBuilderW_Create();

    CkStringBuilderW_Append(sb2,L"=?utf-8?B?VGhpcyBpcyBhIHRlc3Q=?=");
    CkStringBuilderW_Decode(sb2,L"B",L"utf-8");
    wprintf(L"%s\n",CkStringBuilderW_getAsString(sb2));

    // output is:
    // This is a test

    CkStringBuilderW_Clear(sb2);
    CkStringBuilderW_Append(sb2,L"=?utf-8?Q?This_is_a_test?=");
    CkStringBuilderW_Decode(sb2,L"Q",L"utf-8");
    wprintf(L"%s\n",CkStringBuilderW_getAsString(sb2));

    // output is:
    // This is a test

    // "B" or "Q" will decode both B and Q.
    CkStringBuilderW_Clear(sb2);
    CkStringBuilderW_Append(sb2,L"=?utf-8?Q?This_is_a_test?= 123 =?utf-8?B?VGhpcyBpcyBhIHRlc3Q=?=");
    CkStringBuilderW_Decode(sb2,L"Q",L"utf-8");
    wprintf(L"%s\n",CkStringBuilderW_getAsString(sb2));

    // output is:
    // This is a test 123 This is a test


    CkStringBuilderW_Dispose(sb);
    CkStringBuilderW_Dispose(sb2);

    }