@mcflys
Grazhdanin planety :)

Как настроить, чтобы Doctrine2 в базе нормально сохранял кириллицу?

Проблема: Сохраняю сущность Doctrine2 в ZendFramework2. Если базу открыть через phpMyAdmin, все русский слова выводятся в таком виде: Это теÑÑ‚Ð¾Ð²Ð°Ñ Ñтрока. Хотя на сайте нормально русские символы выводятся. Кодировка ячейки таблицы utf8_unicode_ci.

Помогите настроить Doctrine2, чтобы она нормально русские слова сохраняла в базу.

UPD: с кодировкой utf8_general_ci та же ситуация.

UPD2: Проблема не в сервере и не в phpMyAdmin, так как с другими сайтами, не использующими доктрину, все ок.
  • Вопрос задан
  • 2874 просмотра
Решения вопроса 1
@mcflys Автор вопроса
Grazhdanin planety :)
Нашел решение. Может кому-нибудь понадобится:

Открываем файл конфигурации доктрины: /config/autoload/doctrine.local.php

Добавляем в массив doctrine/connection/orm_default/params вот эти ячейки:

'charset' => 'utf8',
'driverOptions' => array(
1002 => 'SET NAMES utf8'
),

Придется все значения пересохранить, так как эти кракозябры начнет показывать на сайте.
Желательно такую настройку проверсти на стадии разработки приложения.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
t-alexashka
@t-alexashka
Сразу пишу legacy код
utf8_general_ci надо :)
Ответ написан
@neolink
utf8_unicode_ci это не кодировка, а таблица сопоставление символов (используется для сравнения строк > < = и т.п.)
когда вы подключаетесь к серверу MySQL вы можете установить ту кодировку в которой хотите общаться с сервером, doctrine это делает сама (utf-8 по умолчанию). а phpmyadmin нет
можно установить кодировку по умолчанию для клиентских соединений в конфиге mysql:
# CLIENT SECTION
[mysql]
default-character-set=utf8
# SERVER SECTION
[mysqld]
default-character-set=utf8
Ответ написан
@shoomyst
dumb
Ну если на сайте всё нормально, то в чём проблема, при чем тут Doctrine2?
Смотрите настройки phpMyAdmin, почему он не в utf8 отдает
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы