Я написал небольшой PHP-скрипт, который выполняет «брендинг» для текущего PDF-файла.Это означает, что на каждой странице я помещаю строку типа «принадлежит» в специальную позицию.Поэтому я использую Zend_Pdf из Zend Framework.Поскольку скрипт используется в области немецкого языка, в одной строке я использую специальный символ "ö" ("Gehört zu").
На моей локальной машине (Windows, XAMPP) скрипт работал нормально, нопри перемещении в веб-пространство моего хостера (немного Linux) строка обрывается на «ö».Это означает, что в моем PDF-файле появляется «Geh».
Код такой:
if (substr($file, strlen($file) - 4) === '.pdf') {
$name = $user->GetName;
$fontSize = 12;
$xTextPos = 100;
$yTextPos = 10;
set_include_path(dirname(__FILE__)); // set include_path for external library Zend Framework
require_once('Zend' .DS . 'Pdf.php');
$pdf = Zend_Pdf::load($file);
$font = Zend_Pdf_Font::fontWithName(Zend_Pdf_Font::FONT_HELVETICA);
$branding = 'Gehört zu ' . $name; // German for: 'Belongs to ', problem with 'ö'
foreach ($pdf->pages as &$page) {
$page->setFont($font, $fontSize);
$page->drawText($branding, $xTextPos, $yTextPos);
}
}
Я полагаю, что проблема связана с каким-то набором символов по умолчанию или языковой настройкой среды PHP.,Поэтому я искал здесь и пробовал:
$branding = utf8_encode('Gehört zu ') . $name;
... и я провел несколько экспериментов с такими функциями, как html_entity_decode, но ничего не помогло, и я решил прекратить искать в темноте и открыть собственный вопрос.
Ждем любых подсказок.Заранее благодарю за помощь!
РЕДАКТИРОВАТЬ: Между тем я обнаружил ту же (?) Проблему, решенную на немецком форуме .Но если я сделаю это так, как они говорят ...
$branding = mb_convert_encoding('Gehört zu ', 'ISO-8859-1') . $name;
... в результате PDF-код будет выглядеть как «Gehrt zu»."Ö" теперь пропущено.
Для этого я нашел еще одну подсказку на трекере проблем Zend .
Подводя итог, я могу отбросить все вещи UTF8 исконцентрируйся на Latin-1 AKA ISO 8859-1.
Я до сих пор не понимаю, почему код работал на моем Windows + XAMPP и теперь падает на Linux моего хостера.