Скачивание файла UTF-8 - PullRequest
       0

Скачивание файла UTF-8

0 голосов
/ 24 января 2020

Мне было трудно конвертировать целое Perl приложение, но я почти сделал это. Тем не менее, я все еще сталкиваюсь с проблемой, которую не могу решить.

Один из моих сценариев создает файл CSV и автоматически загружает его на компьютер пользователя.

Сама загрузка выполняется этот фрагмент кода:

    print $go_cgi->header(
        -type => "application/x-download",
        -Content_Disposition => "attachment; filename=$gs_name",
        -Content_length => -s $gs_path,
        );

    open(my $lo_handle, "<", $gs_path) or die("open failed: $!");
    binmode $lo_handle;
    while ( <$lo_handle> ) {print $_;}
    close $lo_handle;

Где $ go_cgi - мой CGI-объект, $ gs_name содержит имя загруженного файла, а $ gs_path содержит локальный путь к файлу на сервере.

До тех пор, пока файл CSV не содержит какой-либо указанный в UTF-8 символ c, проблем нет, но если это так, скачанный файл не видится как UTF-8, закодированный на клиенте, тогда как на сервере. Я предполагаю, что какое-то преобразование где-то выполняется, но я не понимаю, почему, поскольку я думал, что команда binmode сделает это безопасным.

Может кто-нибудь сказать мне, как решить эту проблему, пожалуйста?

Заранее большое спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...