On 6/26/2014 09:10, WK wrote:
Actually, your code uses here STDERR and seems to me, that Dancer does not take care of it, so in your ./bin/app.pl <http://app.pl> you should add this:
binmode(STDERR, ":encoding(UTF-8)");
Thanks. That solved the problem for me, indirectly. I think Dancer::Logger::Console should do that when config.yml contains charset: "UTF-8". It seems that Dancer::Logger::File already does the right thing when inserting param() data from a UTF-8 HTML form. I wonder why there is a difference? 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. Your reply was still helpful, WK, in that it reminded me that Perl doesn't tag encoding that way, so thanks! As advanced as Perl is in terms of its Unicode support, it's still more primitive than it should be.