Sample code for 30+ languages & platforms
SQL Server

Setting the MIME Text Charset (such as utf-8, iso-8859-1, etc.)

See more MIME Examples

Demonstrates how setting the Charset property controls the character encoding used for the text body in a MIME message.

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)
    -- This example assumes the Chilkat API to have been previously unlocked.
    -- See Global Unlock Sample for sample code.

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

    -- Set the MIME body using some 8bit non-us-ascii characters:
    EXEC sp_OAMethod @mime, 'SetBody', NULL, 'á, é, í, ó, ú'

    -- Set the Content-Type
    EXEC sp_OASetProperty @mime, 'ContentType', 'text/plain'

    -- Set the Content-Transfer-Encoding to "quoted-printable"
    -- so it's easy to see the bytes used to encode each character
    -- (i.e. it will be easy to see that utf-8 uses 2-bytes for 
    -- non-us-ascii characters such as "á", whereas a character
    -- encoding such as iso-8859-1 will use one byte per character.
    EXEC sp_OASetProperty @mime, 'Encoding', 'quoted-printable'

    -- Set the Charset to utf-8
    EXEC sp_OASetProperty @mime, 'Charset', 'utf-8'

    -- Examine the MIME:
    EXEC sp_OAMethod @mime, 'GetMime', @sTmp0 OUT
    PRINT @sTmp0

    -- The MIME should look like this:

    -- Content-Transfer-Encoding: quoted-printable
    -- Content-Type: text/plain; charset="utf-8"
    -- 
    -- =C3=A1, =C3=A9, =C3=AD, =C3=B3, =C3=BA

    -- Now change the Charset to "iso-8859-1"
    EXEC sp_OASetProperty @mime, 'Charset', 'iso-8859-1'

    -- Get the MIME again...
    EXEC sp_OAMethod @mime, 'GetMime', @sTmp0 OUT
    PRINT @sTmp0

    -- Now the MIME should look like this:

    -- Content-Transfer-Encoding: quoted-printable
    -- Content-Type: text/plain; charset="iso-8859-1"
    -- 
    -- =E1, =E9, =ED, =F3, =FA

    EXEC @hr = sp_OADestroy @mime


END
GO