Кодировка после обновления PHP

F2
На сайте с 01.04.2008
Offline
110
145

На проблему указал пользователь сайта.

Есть сервер на Дебиане 8 и есть древний сайт с кодировкой cp1251, работающий на php5.6 где одним из функционала есть возможность скачать текст в RTF, который формируется при помощи также древней библиотеки PHPRtfLite. Так вот, до обновления основной версии PHP до 7.1, все исправно формировалось, а вот после обновления сломалось, вернее многое сломалось, но я поправил что визуально было видно. Так вот, сайт продолжает работать на 5.6, а вот RTF формирует кракозябрами. Игрался как только мог, и с указанием принудительной кодировки - но результата нету

Вот фактически кусок кода, который формирует файл, что не так?

        $tag = array("<br>","<br />");
        $description = str_replace($tag, PHP_EOL, $description);
        $description = strip_tags(nl2br($description));
        $final_text = "";
        $final_text .= $description;
        $final_text .= "\n\n".$postnote."";
        $final_text .= "\n\n".$postnotelink."";

        $rtf = new PHPRtfLite();
        $font = new PHPRtfLite_Font(12, 'Arial');
        // add section
        $sect = $rtf->addSection();
        // write text
        //$hi = "Привет мир!";
        $outputtext = iconv("Windows-1251","UTF-8",$final_text);
        $sect->writeText($outputtext, $font, new PHPRtfLite_ParFormat());

        header('Pragma: ');
        header('Content-type: application/rtf');
        $filename = $new_title;
        $att = 'Content-Disposition: attachment; filename';
        header($att . '="' . $filename . '"');
        header('Content-Transfer-Encoding: binary');
        ob_clean();
        flush();
        $rtf->save('php://output');


H2
На сайте с 18.04.2011
Offline
72
#1
flint2000 :
$outputtext = iconv("Windows-1251","UTF-8",$final_text);
если сайт продолжает работать в кодировке Windows-1251, то зачем конвертировать в UTF-8 ? 
F2
На сайте с 01.04.2008
Offline
110
#2
hellhead2011 #:
то зачем конвертировать в UTF-8 ? 

Давно это было, но насколько могу вспомнить  PHPRtfLite не хотела работать с  Windows-1251, даже при принудительном указании  Windows-1251 в конфиге

Я уже перепробовал все варианты, ранее были проблемы с авторизацией, но благо наше решение, обернуть с указанием кодировки, а вот с RTF ничего подходящего не нахожу

        $username = substr(htmlspecialchars(str_replace("\'", "'", trim($username)), ENT_SUBSTITUTE, cp1251), 0, 25);

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий