all guides

// how to fix

Garbled characters: fix encoding and charset problems (UTF-8)

Accents turning into "é" or question marks mean the email does not declare its text encoding correctly. Use UTF-8 everywhere and declare it.

What it means

Computers store letters as numbers. The table that links numbers to letters is called the character encoding, or charset. The modern standard, which covers every language and emoji, is UTF-8. Older ones, like ISO-8859-1 or Windows-1252, only cover Western European letters.

When an email is written in one encoding but announced as another, letters with accents come out wrong. For example "Café" becomes Café, and "€" becomes € or a question mark.

Why it matters

  • Garbled text looks careless, and readers may think the email is a scam.
  • Spam filters notice badly encoded subjects, missing charset declarations and strange characters. SpamAssassin has rules for them.
  • A broken subject line is the first thing the reader sees.

How to check

  • Send a test email: on the home page, copy your unique test address, send it a normal email from the mailbox or tool you want to check, then open the report. Look at the subject and the "Message text" section: accents and symbols should appear correctly. Open the "Raw headers" section and look for the Content-Type line, and check the SpamAssassin rules for anything about charset or encoding.

A correct header looks like this:

Content-Type: text/html; charset=UTF-8

A subject with accents should be encoded, for example:

Subject: =?UTF-8?B?Q2Fmw6kgZGUgUGFyaXM=?=

This looks strange, but it is normal: mailboxes decode it and show "Café de Paris".

How to fix it

  1. Use UTF-8 everywhere. In your newsletter tool, website, shop or CRM settings, choose UTF-8 as the email encoding if there is a choice.
  2. Save templates as UTF-8. If you edit HTML templates in a text editor, save the file as "UTF-8". Avoid "ANSI" or "Western".
  3. Declare it in the HTML too, inside the head of the template: <meta charset="UTF-8">.
  4. Check your database and website. If names or text come from a database (customer names, product names), it must also store text in UTF-8. Otherwise the text is already broken before it reaches the email.
  5. For developers: use a well-known email library (such as PHPMailer, nodemailer or Python's email package) and set the charset to UTF-8. Do not build email headers by hand: subjects and names with accents must be encoded as shown above.
  6. Avoid copy-paste from Word. It brings "smart" quotes and hidden characters. Paste as plain text, then format in your tool.

Common symptoms and causes

  • é, è: UTF-8 text announced as ISO-8859-1 or Windows-1252.
  • ? or a black diamond: old encoding text announced as UTF-8.
  • Raw =?UTF-8? code visible in the subject: the encoding is malformed.

Check that it is fixed

Send a new test email from the home page with accents, the euro sign and an apostrophe in both the subject and the text. The report should display them correctly, the Content-Type header should mention charset=UTF-8, and no encoding rule should appear in the SpamAssassin list.

Check that it is fixed

DNS changes can take from a few minutes to a few hours. Then send a new test email or scan your domain again.

Related guides