Как настроить корректное отображение кириллицы с бд в YII?
C базы данных данные приходят в кодировке ANSI Английские слова и цифры - приходят корректно. Кириллица приходит как ????????(знаки вопросов) Но есть подозрение, что charset => utf-8 вообще игнорируется (пробовал вписать туда разное - не выходит) Можете указать на ошибку в коде? Может как то ещё в YII можно указать кодировку?
Вот так подключаюсь в YII
<?php $db = new yiidbConnection([ 'dsn' => 'dblib:host=192.111.11.111;dbname=db', 'username' => 'us', 'password' => 'pas', 'charset' => 'utf-8, ]); $result = $db->createCommand("EXECUTE get :prod") ->bindValue(':prod_sn',$serial) ->queryAll(); ?> |
<?php $db = new yiidbConnection([ 'dsn' => 'dblib:host=192.111.11.111;dbname=db', 'username' => 'us', 'password' => 'pas', 'charset' => 'utf-8, ]); $result = $db->createCommand("EXECUTE get :prod") ->bindValue(':prod_sn',$serial) ->queryAll(); ?>
PS - Перекодировать базу нет возможности - она не моя
Дополнительно:
Ответы:
USE your_database_name; show variables like "character_set_database"; |
USE your_database_name; show variables like "character_set_database";
- Большое спасибо! Не сочтите за наглость, но не подскажете как это в YII корректно прописать?
Мало работал с базами данных, пока плаваю.. - weeaboodestroyer, это в запрос после соединения вставьте, в ответе сервера должна содержаться кодировка базы данных. Даже не обязательно использовать YII, можно просто скрипт на 5 строк с соединением и запросом написать.
Вообще-то сервис прямо запрещает дублировать вопросы.
Тем более, что это бессмысленно.
А у этого вопроса - вдвойне.
Никто тебе через астрал не скажет, какая конкретно у тебя в БД кодировка.
А РНР тут вообще ни при чем.
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для корректного отображения кириллицы с базы данных в Yii, необходимо учитывать несколько важных моментов:
1. Убедитесь, что ваша база данных правильно настроена для работы с кириллицей. Для этого нужно установить кодировку UTF-8 для всех таблиц и столбцов, которые будут хранить кириллические данные.
2. В конфигурационном файле Yii (обычно это файл `protected/config/main.php`) укажите кодировку UTF-8 для соединения с базой данных. Например, для MySQL это можно сделать следующим образом:
```php
'db'=>array(
'connectionString' => 'mysql:host=localhost;dbname=mydatabase',
'emulatePrepare' => true,
'username' => 'root',
'password' => '',
'charset' => 'utf8',
),
```
3. При создании таблиц в базе данных через миграции Yii, обязательно указывайте кодировку UTF-8 для каждой таблицы. Например:
```php
public function safeUp()
{
$this->createTable('my_table', array(
'id' => 'pk',
'name' => 'string',
), 'ENGINE=InnoDB DEFAULT CHARSET=utf8');
}
```
4. При работе с формами и выводом данных на страницах Yii, убедитесь, что все данные правильно экранируются и обрабатываются для корректного отображения кириллицы. Используйте функции Yii::app()->request->getPost() для получения данных из форм, и CHtml::encode() для безопасного вывода на страницу.
Следуя этим рекомендациям, вы сможете настроить корректное отображение кириллицы с базы данных в Yii. Если у вас возникнут дополнительные вопросы или проблемы, не стесняйтесь задавать их на форуме разработчиков Yii для получения дополнительной помощи.