DataFlex
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
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