Форма и кодировка $form->label() [РЕШЕНО]
Форма и кодировка $form->label() [РЕШЕНО]
Доброго времени суток.
Проблема : кодировка lable формы, юзаю метод $form->label($model, 'текст на кириллице') отдает т�������� о�� к����������������
Все установлено в utf-8, кодировка всех файлов utf-8, Content-Type:text/html; charset=utf8, кодировка браузера тоже utf8. если просто написать в html текст на кириллице все нормально, <?php echo 'текст на кириллице'; ?> тоже все нормально
Тема была затронута тут : viewtopic.php?f=3&t=1108&p=8048,
и предложили решение (viewtopic.php?f=3&t=1108#p25888)
решение такое : echo $form->labelEx($model,'',array('label'=>'текст на кириллице ')); ?> И будет на русском.
но это решение по ряду причин не устраивает
Где копать? Кодировка в БД тут ни при чем, хотя и она в utf-8 тоже. Почему $form->label($model, 'текст на кириллице') отдает т�������� о�� к���������������� ??
Спасибо за помощь.
Проблема : кодировка lable формы, юзаю метод $form->label($model, 'текст на кириллице') отдает т�������� о�� к����������������
Все установлено в utf-8, кодировка всех файлов utf-8, Content-Type:text/html; charset=utf8, кодировка браузера тоже utf8. если просто написать в html текст на кириллице все нормально, <?php echo 'текст на кириллице'; ?> тоже все нормально
Тема была затронута тут : viewtopic.php?f=3&t=1108&p=8048,
и предложили решение (viewtopic.php?f=3&t=1108#p25888)
решение такое : echo $form->labelEx($model,'',array('label'=>'текст на кириллице ')); ?> И будет на русском.
но это решение по ряду причин не устраивает
Где копать? Кодировка в БД тут ни при чем, хотя и она в utf-8 тоже. Почему $form->label($model, 'текст на кириллице') отдает т�������� о�� к���������������� ??
Спасибо за помощь.
Последний раз редактировалось Vladislav 2013.11.03, 10:40, всего редактировалось 1 раз.
Re: Форма и кодировка $form->label()
.htaccsess? посмотрите может там windows-1251 стоит....
Re: Форма и кодировка $form->label()
AddDefaultCharset utf8Rastamans писал(а):.htaccsess? посмотрите может там windows-1251 стоит....
Re: Форма и кодировка $form->label()
Если кроме вывода подписи из модели везде кодировка правильная - остается только бд. Проверьте не только кодировку самой бд, но и таблиц и текстовых полей в ней. Бывает кодировка таблицы одна, а поле в другой кодировке. И через phpmyadmin посмотрите сами записи в каком виде лежат - возможно квадратики в базу уже приходят из формы, тогда проверять форму и отправку инфы в бд нужно.
Re: Форма и кодировка $form->label()
Кодировка таблицы - utf8_unicode_ci, кодировка поля - utf8_unicode_ci (тип данных - varchar)C0vax писал(а):Если кроме вывода подписи из модели везде кодировка правильная - остается только бд. Проверьте не только кодировку самой бд, но и таблиц и текстовых полей в ней. Бывает кодировка таблицы одна, а поле в другой кодировке. И через phpmyadmin посмотрите сами записи в каком виде лежат - возможно квадратики в базу уже приходят из формы, тогда проверять форму и отправку инфы в бд нужно.
Сами записи правильно отображаются, попадают туда не через форму.
Re: Форма и кодировка $form->label()
это все происходит в windows?
можно на всякий случай посмотреть результат вывода в одном view файле
потому как в линуксе все нормально...
и вообще - то вторым параметром в label должно идти имя attribute хотите свой делайте по аналогии
посмотрел исходники - отсутствующий label в model приходит к
framework/base/CModel.php
что для работы с юникодом очень php и ОС зависимо.
можно на всякий случай посмотреть результат вывода в одном view файле
Код: Выделить всё
<?php echo $form->label($model,'текст на кириллице'); ?>
<?php echo ' текст на кириллице'; ?>'
и вообще - то вторым параметром в label должно идти имя attribute хотите свой делайте по аналогии
Код: Выделить всё
$form->label($model,'',array('label'=>'текст на кириллице '));
framework/base/CModel.php
Код: Выделить всё
public function generateAttributeLabel($name){
return ucwords(trim(strtolower(str_replace(array('-','_','.'),' ',preg_replace('/(?<![A-Z])[A-Z]/', ' \0', $name)))));
}
Re: Форма и кодировка $form->label()
Ты не поверишь, бувкально 10 минут назад подебажил и тоже дошел до generateAttributeLabel,dmg писал(а): посмотрел исходники - отсутствующий label в model приходит к
framework/base/CModel.phpКод: Выделить всё
public function generateAttributeLabel($name){ return ucwords(trim(strtolower(str_replace(array('-','_','.'),' ',preg_replace('/(?<![A-Z])[A-Z]/', ' \0', $name))))); }
пока решил просто заменить таким способом : strtolower заменил на mb_strtolower('','utf-8')
Но что-то мне подсказывает что это на уровне апача нужно настроить дефолтную кодировку для таких ф-й работы со строками.
(default_charset = "UTF-8" не изменил ситуацию). Пока играюсь с http://php.net/manual/en/mbstring.confi ... l-encoding
Меня беспокоит этот вопрос потому что на линуксе такой проблемы нет, и strtolower отдает кириллицу, а на Windows значит нужно настраивать
Re: Форма и кодировка $form->label()
Вышел из ситуации следующим образом, итог : в php.ini установил mbstring.func_overload = 2. теперь strtolower('латиница') отдает латиницу.
Немного теории. strrolower по-разному работает с латиницей, все зависит от настроек функций работы с мультибайтными строками.
Вот хорошая статья : параграф "Перегрузка/Overload строковых функций PHP mbstring-функциями с поддержкой многобайтных символов"
http://www.php.su/functions/?cat=mbstring
Вот ф-и для диагностики текущих настроек : http://www.php.net/manual/ru/ref.mbstring.php
Немного теории. strrolower по-разному работает с латиницей, все зависит от настроек функций работы с мультибайтными строками.
Вот хорошая статья : параграф "Перегрузка/Overload строковых функций PHP mbstring-функциями с поддержкой многобайтных символов"
http://www.php.su/functions/?cat=mbstring
Вот ф-и для диагностики текущих настроек : http://www.php.net/manual/ru/ref.mbstring.php