Строка перестает отображаться после 1-го символа с диакритическим знаком

** Проблема с Laravel 4 beta 3:

Строка перестает отображаться после первого символа с диакритическим знаком.**

У меня есть таблица БД, в которой я храню записи DVD (название, директор,...)

БД — utf_8, сопоставление для заголовка — utf8_unicode_ci

файл конфигурации database.php указывает utf8_unicode_ci ....... В модели (расширяет Eloquent):

class Dvdentry extends Eloquent {
public $table = 'dvd_entry';
public $timestamps = false;
}

......... В контроллере:

  $entries=Dvdentry::where($field,'like',$ulike)->get();

........ В представлении:

 @foreach($entries as $entry)
    <a href={{$entry->imdb_link}} page=_blank>{{$entry->title}}</a>

.... Это должно отображать список заголовков. Для заголовков, в которых есть ударение (например, Mépris (Le)), используется только буква M.

отображается. Я пробовал безуспешно:

 {{{$entry->title}}}
 <?php echo $entry->title; ?>
 <?php echo utf_decode($entry->title); ?>

......... Любая подсказка. Спасибо за помощь.


person user2096663    schedule 21.02.2013    source источник
comment
Было бы интересно узнать, где это происходит. Если вы сбросите $entries в свой контроллер, будут ли данные такими, как вы ожидаете?   -  person juco    schedule 21.02.2013
comment
@juco Дамп сразу после запроса (в контроллере) показывает, что символы с диакритическими знаками отсутствуют: ‹br/›string 'Reservoir Dogs' (длина = 14) ‹br/› string 'M' (длина = 1) вместо ' Mépris'‹br/› string 'Valseuses (Les)' (length=15)‹br/›code :‹br/› $entries=Dvdentry::where($field,'like',$ulike)-›get( );‹br/› foreach($entries as $entry) { ‹br/›var_dump($entry-›title);‹br/› };   -  person user2096663    schedule 22.02.2013
comment
ОК решено. У меня есть поврежденная БД после копирования (экспорт/импорт) в БД разработки (MySQL 5.5.2.4, PHPmyAdmin 3.5.1) из рабочей БД (MySQL 5.0, PHPmyAdmin 2.6.4). Мне еще предстоит найти, почему копия не работает.   -  person user2096663    schedule 22.02.2013


Ответы (1)


Вы пробовали помощник e()?

e() — запустить htmlentites для заданной строки с поддержкой UTF-8.

$entities = e('<html>foo</html>');

Проверьте документацию Laravel на этом этапе: http://laravel.com/docs/helpers#strings

Я также предполагаю, что акценты приводят к провалу Blade. Попробуйте закодировать заголовки перед сохранением в БД. Таким образом, акценты закодированы в объектах HTML.

Mépris => M&eacute;pris
person Markus Hofmann    schedule 06.07.2013