Databases:
In my experience, both MySQL and Postgres handled Unicode quite okay.
Languages:
- PHP <=5.3 is somewhat restricted in regard to unicode, while the upcoming PHP 6 promises to fix that.
- Ruby 1.8 had poor unicode support, but 1.9 is said to handle unicode nicely (I have no own experience there).
Restrictions of PHP 5.3:
It is possible to use PHP 5 together with unicode, but then one has to be careful with strings. Many string functions, for instance the one which counts the length of characters, returns the number of bytes, not the number of characters.
There are are additional functions available though, which return the number of characters.
If this is a new project you should be able to use the right functions from the start.
For our existing PHP project, I decided to leave it where it was (Windows 1252), due to it being an internal project and limited value for unicode (sadly, I really love unicode).