I think Dancer::Logger::Console should do that when config.yml contains charset: "UTF-8".
My test case boiled things down too far. My real issue was different. It was yet another case of me thinking Perl somehow tags strings with their source encoding, so that data coming from a UTF-8 source and going out to a UTF-8 sink wouldn't need translation. I needed to add an explicit encode('utf-8', $s) wrapper to that code path.