How many pieces are there in the UTF-8 puzzle?
I'm blogging this partly as a reminder to myself since I always forget one piece.
- You need to specify database tables use UTF-8.
- You need to use setEncoding() on form and URL scope to set them to UTF-8 (in Application.cfc).
- You need to set the output content type to UTF-8.
- You need to set the pageEncoding to UTF-8 (on any CFML page which needs it - so you might as well set it on all of them).
- Your datasource setup, at least for MySQL, must have useUnicode=true&characterEncoding=utf-8 in the Connection String textarea under Advanced Settings.

"Use this function when the character encoding of the input to a form or the character encoding of a URL is *not* in UTF-8 encoding."
So why bother including that as one of your points? :)
pageEncoding in cfprocessingdirective is needed when the .cfm file has no BOM mark. Although Eclipse/CFEclipse doesn't save BOM mark, good old Windows Notepad does. :)
Adding processingdirectives to every template to ensure the complier processes them as UTF-8 just seems silly to me.
DreamWeaver can also save files with a BOM. Sadly Eclipse does not and I guess the new CF IDE (Bolt) which is built on Eclipse will also not.
Lets hope Adobe just makes the CF complier use unicode as the default.