You need to do three things:
- Make sure you're receiving the data as UTF-8 data. For MySQL, query
SET NAMES 'utf8'
before selecting records.
- Make sure you're using UTF-8 compatible functions when dealing with UTF-8 strings.
- Make sure you're setting the output encoding as UTF-8. For HTML, this can be done by setting the
Content-type
HTTP header to (e.g.) text/html; charset=utf-8
.
Of course, replace "UTF-8" with whatever encoding you want which supports the characters you need. There's no need to change the database tables (except for possible performance gains). You may need to change HTML templates, etc. if you decide on UTF-16 or something else which isn't (mostly) ASCII-compatible.