My name is Simone Faré and I'm italian. I think you can understand how important is for me UTF-8 and character set management.
Using a framework should allow you to avoid all the boring parts of stuff and UTF8 in Dancer2 is actually like that, but you need to remember the three points where the magic spell lies and ensure to activate all of them.
The first point is the easiest, the most powerful and it comes for free.
It's just the charset: "UTF-8" configuration key in the config.yml. Spend a moment reading the documentation page about it and you'll find how many things this little word do. You could try it also with girls in pubs, probably It will do something good also with it as well.
The second point is about your template engine, if you're using template toolkit add:
This is a useful configuration, but not as powerful as the other one. If you're in an environement where all the charset are managed for good your template engine and the browser will not need to do lucky (wrong) guess about encoding. I think that this configuration can help just when guessing is needed.
Obviously the third point is very important, very insidious and very well hidden in the documentation, because there's no gain without pain.
The first configuration is about the framework, its internal logic, the second is about HTML and templating, so who are we forgetting? Never heard of something named MySQL?
DBA are strange people, very different from developers. A database has encodings, collations, things about tables, magic and curses everywhere. What I know is that if you don't nail down your DB connection to what you want you will never save good data in it. How to do this?
In the database configuration:
Just that. But remember it or you'll suffer. Suffering is good, but suffering forever is unfair.