Sample code for 30+ languages & platforms
SQL Server

MIME Header Q and B Encoding and Decoding

See more Encryption Examples

Demonstrates how to Q and B encode/decode.

Chilkat SQL Server Downloads

SQL Server
-- Important: See this note about string length limitations for strings returned by sp_OAMethod calls.
--
CREATE PROCEDURE ChilkatSample
AS
BEGIN
    DECLARE @hr int
    -- Important: Do not use nvarchar(max).  See the warning about using nvarchar(max).
    DECLARE @sTmp0 nvarchar(4000)
    DECLARE @success int
    SELECT @success = 0

    DECLARE @sb int
    EXEC @hr = sp_OACreate 'Chilkat.StringBuilder', @sb OUT
    IF @hr <> 0
    BEGIN
        PRINT 'Failed to create ActiveX component'
        RETURN
    END

    EXEC sp_OAMethod @sb, 'Append', @success OUT, 'This is a test'

    EXEC sp_OAMethod @sb, 'GetEncoded', @sTmp0 OUT, 'B', 'utf-8'
    PRINT @sTmp0
    -- output is:
    -- =?utf-8?B?VGhpcyBpcyBhIHRlc3Q=?=

    EXEC sp_OAMethod @sb, 'GetEncoded', @sTmp0 OUT, 'Q', 'iso-8859-1'
    PRINT @sTmp0
    -- output is:
    -- =?utf-8?Q?This_is_a_test?=

    DECLARE @sb2 int
    EXEC @hr = sp_OACreate 'Chilkat.StringBuilder', @sb2 OUT

    EXEC sp_OAMethod @sb2, 'Append', @success OUT, '=?utf-8?B?VGhpcyBpcyBhIHRlc3Q=?='
    EXEC sp_OAMethod @sb2, 'Decode', @success OUT, 'B', 'utf-8'
    EXEC sp_OAMethod @sb2, 'GetAsString', @sTmp0 OUT
    PRINT @sTmp0

    -- output is:
    -- This is a test

    EXEC sp_OAMethod @sb2, 'Clear', NULL
    EXEC sp_OAMethod @sb2, 'Append', @success OUT, '=?utf-8?Q?This_is_a_test?='
    EXEC sp_OAMethod @sb2, 'Decode', @success OUT, 'Q', 'utf-8'
    EXEC sp_OAMethod @sb2, 'GetAsString', @sTmp0 OUT
    PRINT @sTmp0

    -- output is:
    -- This is a test

    -- "B" or "Q" will decode both B and Q.
    EXEC sp_OAMethod @sb2, 'Clear', NULL
    EXEC sp_OAMethod @sb2, 'Append', @success OUT, '=?utf-8?Q?This_is_a_test?= 123 =?utf-8?B?VGhpcyBpcyBhIHRlc3Q=?='
    EXEC sp_OAMethod @sb2, 'Decode', @success OUT, 'Q', 'utf-8'
    EXEC sp_OAMethod @sb2, 'GetAsString', @sTmp0 OUT
    PRINT @sTmp0

    -- output is:
    -- This is a test 123 This is a test

    EXEC @hr = sp_OADestroy @sb
    EXEC @hr = sp_OADestroy @sb2


END
GO