[dancer-users] Failing to send a file in iso-8859-1

Russell Jenkins russell.jenkins at strategicdata.com.au
Fri Oct 7 11:27:26 BST 2016

On 6/10/2016 11:56 PM, Lutz Gehlen wrote:

>>> send_file(
>>>      \$str,
>>>      content_type => 'text/csv',
>>>      filename     => 'foo.csv',
>>> );
>>> The problem is that external requirements force me to send the file
>>> in iso-8859-1 and it seems that I cannot manage to achieve that.
>> As far as I understand, the charset is set in config, so you could try
>> to override the setting in your route like:
>> set 'charset'      => 'iso-8859-1;
>> Never tried, but it should work.
> Yes. this works. However, it changes charset permanently (for the current
> process) and I don't get the chance to change it back because send_file does
> not return. Is there no way to set it temporarily just for this send_file?

There should be no need to change your apps charset.

If you look at any of the HTTP specs, a Content-Type header looks like:

   Content-Type: text/html; charset=utf-8

Without digging into the Dancer1 code,

   send_file(\$str, content_type => 'text/html; charset=utf-8', filename 
=> 'foo.html' );

should DWIM (it will in Dancer2). Substitute your own mime types and 
encoding as needed.

Hope that helps,

More information about the dancer-users mailing list