преобразование специальных символов с неработающим html_entity_decode

У меня есть сайт php, где я экспортирую некоторые данные в файл PDF. Сайт использует fpdf для создания PDF-файла, но некоторые специальные символы не отображаются правильно в созданном PDF-файле.

Пример ошибки

Хитрость в том, что некоторые специальные символы печатаются правильно, а другие нет. Default_charset сайта «iso-8859-1», а файлы php закодированы в «ANSI». Я также напечатал массив с информацией (которую я получаю из базы данных), и это нормально. Итак, я думаю, это что-то с fpdf? Но странно, что в некоторых местах один и тот же специальный символ печатается неправильно, а в других — неправильно.

Спасибо 🙂

РЕДАКТИРОВАТЬ:

Я обнаружил, что именно в этом фрагменте кода строки плохо закодированы:

foreach ($this->relatorioData['Roteiro'] as $label => $value) {
$this->Cell(55, 4, html_entity_decode($label), 0, 0, 'L', false);
$this->Cell(95, 4, html_entity_decode($value), 0, 1, 'L', false);
}

Строки в порядке до html_entity_decode, где только некоторые из них теряют специальные символы. Знаете ли вы, что может сделать это? Должен ли я использовать другой метод?

1

Решение

У меня тоже были проблемы с FPDF. Я искал все, прежде чем обнаружил, что это на самом деле решается прямо в FPDF FAQ (вопрос / ответ 3 на момент написания статьи). Там есть ряд потенциальных решений в зависимости от потребностей. Варианты, указанные здесь:

1

Другие решения

Ну, я нашел свой ответ. Мне нужно было изменить это:

html_entity_decode($text)

К этому:

html_entity_decode($label, ENT_COMPAT, 'ISO-8859-1')

Таким образом, все мои струнные были декодированы правильно.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector