You can use Unicode data, but PHP's functions have trouble handling it if you want to do something with it. Try passing any unicode string to strlen() or substr() or any other string function. The results will not be what you expect. So until PHP 6, if you want to process and transform unicode data (and not just pass it around from the database to the browser), you have to use mb_string extension or PCRE in unicode mode, which limits what you can do with unicode data.
So yours works fine in the regard that you are just passing unicode data around.
However, your string lengths are wrong. Take for example I just entered in "åçé" and while it displays fine (that has never been an issue), it tells me it has a length of 6 which is wrong. It is 6 bytes perhaps, but the string length is only 3. See? That is why PHP does not fully support unicode.