UTF-8 Encoding – Is UTF-8 Enough for All Common Languages in MySQL and Django?

djangomysqlutf-8

I just wanted to develop a translation app in a Django projects which enables registered users with certain permissions to translate every single message it appears in latest version.

My question is, what character set should I use for database tables in this translation app? Looks like some european language characters cannot be stored in UTF-8?

Best Answer

Looks like some european language characters cannot be stored in UTF-8?

Not true. UTF-8 can store any character set without limitations except maybe for Klingon. UTF-8 is your one stop shop for internationalization. If you have problems with characters, they are most likely to be encoding problems, or missing support for that character range in the font you're using to display the data with (Extremely unlikely for a european language character though, but common e.g. when viewing indian sites on an european computer. See also this question)

If a non-western character set can't be rendered, it could be that the user's built in font does not have that range of UTF-8 covered.

Update: Klingon it is indeed not part of official UTF-8:

Some modern invented scripts which have not yet been included in Unicode (e.g., Tengwar) or which do not qualify for inclusion in Unicode due to lack of real-world use (e.g., Klingon) are listed in the ConScript Unicode Registry, along with unofficial but widely-used Private Use Area code assignments.

However, there is a volunteer project that has inofficially assigned code points F8D0-F8FF in the private area to Klingon. Gallery of Klingon characters

Related Question