Sample code for 30+ languages & platforms
DataFlex

Demonstrate the Global.AutoQBDecode property

The Global.AutoQBDecode property can be set to _TRUE_ to cause Q/B encoded string arguments passed to any Chilkat method to be automatically decoded before being used.

Note: This example requires Chilkat v10.0.0 or later.

Chilkat DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Handle hoGlob
    String sS_cafe
    Handle hoS1
    Boolean iSuccess
    String sS_hello
    Handle hoS2
    String sTemp1

    // Turn on auto Q/B decoding for all strings passed to any Chilkat method in any Chilkat class.
    Get Create (RefClass(cComChilkatGlobal)) To hoGlob
    If (Not(IsComObjectCreated(hoGlob))) Begin
        Send CreateComObject of hoGlob
    End
    Set ComAutoQBDecode Of hoGlob To True

    // ---------------------------------------------------------------------------------------------------------------------------------------------
    // "Q" Encoding

    // Quoted-Printable encoding is primarily used for text that is mostly ASCII with some non-ASCII characters. 
    // It encodes these characters in a way that remains mostly readable and compatible with ASCII-only systems.

    // How It Works with UTF-8:
    // - ASCII characters (except special characters like `=`) are encoded as themselves.
    // - Non-ASCII characters are represented by their UTF-8 byte values, each byte encoded as `=` followed by two hexadecimal digits. 
    //   For example, the UTF-8 character "é" (U+00E9) is encoded as `=C3=A9`.

    // For example, consider the text "Café" encoded in UTF-8. The UTF-8 bytes for "é" are `C3 A9`, so in Quoted-Printable, it looks like this:  Caf=C3=A9

    // The "Q" encoding has this syntax:  "=?charset?q?encoded_text?="
    // For example: "=?UTF-8?Q?Caf=C3=A9_announcement?="

    // ------
    // "B" Encoding

    // Base64 encoding is used to encode non-ASCII text, making it more suitable for text with a high density of non-ASCII characters, such as those found in non-Western European languages.

    // For example, consider the text "こんにちは" ("Hello" in Japanese).
    // The "B" encoded string would be "=?UTF-8?B?44GT44KT44Gr44Gh44Gv?="

    // ------
    // Q encoding is suitable for text that is mostly ASCII.
    // B Encoding is best for text that is densely packed with non-us-ascii chars, such as non-Latin (Asian) languages.
    // ---------------------------------------------------------------------------------------------------------------------------------------------

    // You can use Chilkat's online tool at Online Binary Encoder to pre-encode your literal strings before
    // inserting them into your source code.

    // When using the online tool, choose either "MIME header Q Encoding" or "MIME Header B Encoding".

    // For example:
    Move "=?utf-8?Q?Caf=C3=A9?=" To sS_cafe
    Get Create (RefClass(cComChilkatStringBuilder)) To hoS1
    If (Not(IsComObjectCreated(hoS1))) Begin
        Send CreateComObject of hoS1
    End
    Get ComAppend Of hoS1 sS_cafe To iSuccess
    Get ComGetAsString Of hoS1 To sTemp1
    Showln sTemp1
    // Output is Café

    Move "=?UTF-8?B?44GT44KT44Gr44Gh44Gv?=" To sS_hello
    Get Create (RefClass(cComChilkatStringBuilder)) To hoS2
    If (Not(IsComObjectCreated(hoS2))) Begin
        Send CreateComObject of hoS2
    End
    Get ComAppend Of hoS2 sS_hello To iSuccess
    Get ComGetAsString Of hoS2 To sTemp1
    Showln sTemp1
    // Output is こんにちは


End_Procedure