Я боролся с той же самой проблемой, так как пытаюсь добавить немного французской / немецкой интернационализации к нескольким элементам управления в виджете.
Символы с акцентами, которые хранятся в моей базе данных, печатаются как UTF-8. Однако символы, жестко закодированные в массивы в файлах PHP, отображаются либо в виде черного ромба с вопросительным знаком внутри, либо в виде небольшого квадратного прямоугольника.
Я пытался кодировать / декодировать жестко закодированные строки из моего php-файла, но не мог правильно отобразить символы.
Поскольку у меня такой конечный набор символов, и я работаю строго с HTML, я просто добавил немного функциональности в свой класс intl, чтобы заменить символы на HTML-сущности.
У меня есть эти свойства.
static $accentEntities = array('á' => 'á',
'É' => 'É',
'é' => 'é',
'í' => 'í',
'û' => 'û',
'ü' => 'ü');
static $accents = array();
static $entities = array();
Я установил несколько своих заменяющих массивов в конструкторе ...
foreach (self::$accentEntities as $char => $entity) {
self::$accents[] = $char;
self::$entities[] = $entity;
}
А потом, когда мне нужна одна из моих жестко закодированных строк в моем классе, я просто возвращаю ее так ...
return str_replace(self::$accents,self::$entities,$str);
Это полностью гетто-решение ... но пока оно работает. Я определенно хотел бы услышать правильный способ отображения акцентов / специальных символов, которые жестко закодированы в файл PHP.