Как настроить корректное отображение кириллицы с бд в YII?

Ссылка скопирована
1 ответ

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 строк с соединением и запросом написать.

Вообще-то сервис прямо запрещает дублировать вопросы.
Тем более, что это бессмысленно.
А у этого вопроса - вдвойне.
Никто тебе через астрал не скажет, какая конкретно у тебя в БД кодировка.
А РНР тут вообще ни при чем.

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Кирилл JS Ответ

Для корректного отображения кириллицы с базы данных в 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 для получения дополнительной помощи.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно