SquirrelMail uses the charset corresponding to the translation selected under Options. The languages and the corresponding charsets are defined in functions/i18n.php. For example if you want to use UTF-8 instead of ISO-8859-1 for German, you can do this there. Make sure to have the matching locale (de_DE.UTF-8) installed.

Emails are composed using that charset. If user uses characters unsupported by selected charset - composed email text is broken. If user manually changes charset in browser - composed email text is broken. Currently (2004-12-10) SquirrelMail does not have any tests that stop user from doing it.

Support of replying and forwarding email with different charset is experimental (only in 1.5.x and 1.4.4+) and works only with specific encoding (UTF-8) or with certain combination of translation and email encodings.

SquirrelMail supports the $lossy_encoding option since 1.4.4 and 1.5.1, which allows charset conversions when the output charset does not support all symbols used in the original email charset.

(decoding functions are written but not included in the standard SquirrelMail package)

big5

gb2312

euc-jp

iso-2022-jp (currently only ascii and jis0208-1983 mappings are implemented)

iso-2022-jp-2 (currently only ascii and jis0208-1983 mappings are implemented)

iso-2022-cn (requires recode support)

iso-2022-kr (requires recode support)

x-mac-arabic

x-mac-ce

x-mac-chinsimp

x-mac-chintrad

x-mac-cyrillic

x-mac-croatian

x-mac-devanagari

x-mac-farsi

x-mac-greek

x-mac-gujarati

x-mac-gurmukhi

x-mac-hebrew

x-mac-icelandic

x-mac-romanian

x-mac-roman

x-mac-thai

x-mac-turkish

Charsets that depend on selected translation:

euc-KR (Korean)

shift_jis (Japanese)

Special patches might enable support for other charsets. These patches are available in SquirrelMail 1.5.0, but they are not enabled by default. Patches are experimental, depend on the PHP recode functions or specific charset set in user translation.

TODO:

Add support for more Eastern charsets.

Add an information message that informs the end user that he is using an unsupported charset (or add this thing to the charset plugin).

Add more charsets.

Prevent or correct when the end user uses characters unsupported by selected charset (particularly "smart quotes" in ISO-8859-*).