[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: и снова об utf-8..
Invis1ble
Всем привет!
Кто-нибудь работал с symfony? Возник такой вопрос: есть YAML-файл, описывающий структуру БД, запускаю задачу doctrine:build --all --and-load, но выдает
SQLSTATE[HY000]: General error: 1267 Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '='
т.к. в данных, загружаемых в БД есть кириллица, а в БД все сравнения - latin1_swedish_ci. Как изменить кодировку БД в YAML? Или это иначе как-то делается?..
Не могу никак допетрить и в гугле не могу найти.. (



Спустя 2 часа, 6 минут, 37 секунд (6.11.2010 - 20:35) kirik написал(а):
Погляди тут и тут код, хотя может в новых версиях симфони уже поправили, поэтому можешь попробовать добавить
charset: utf-8

в конфиг, и пересоздать БД.. Но не уверен.

UPD
Во че нашел.

Спустя 5 часов, 1 минута, 21 секунда (7.11.2010 - 01:36) Invis1ble написал(а):
kirik
уже порешал эту проблему, но все равно спасибо за помощь.
Делал так (в YAML-файле):
  collate: utf8_general_ci
charset: utf8

но не работало, знакомый подсказал что эти настройки должны быть в options
  options:
collate: utf8_general_ci
charset: utf8

попробовал - получилось )

Спустя 6 минут, 57 секунд (7.11.2010 - 01:43) Invis1ble написал(а):
Чтоб не плодить лишних топиков, напишу здесь - вопрос также подходит под название топика.
Есть например такой код
<?php
$input_charset = 'utf-8';
$output_charset = 'us-ascii';

$input_str = 'Входная строка';
$output_str = iconv($input_charset, $output_charset, $input_str);

echo $input_str.'<b>=></b>'.$output_str.'<br />';

Почему не срабатывает? Насколько я понял, должна быть транслитерация входной строки произведена, но выдает notice:
Notice: iconv() [function.iconv]: Detected an illegal character in input string in C:\www\html\test.php on line 6

Спустя 37 минут, 43 секунды (7.11.2010 - 02:21) kirik написал(а):
Invis1ble
Обращайся к мануалу как только возникает ошибка, там будет скорее всего указано, почему она может происходить:
Цитата (http://www.php.net/manual/en/function.iconv.php)
If you append the string //TRANSLIT to out_charset transliteration is activated. This means that when a character can't be represented in the target charset, it can be approximated through one or several similarly looking characters. If you append the string //IGNORE, characters that cannot be represented in the target charset are silently discarded. Otherwise, str is cut from the first illegal character and an E_NOTICE is generated.

Тоесть можно указать: us-ascii//TRANSLIT как выходную кодировку.

Спустя 20 минут, 15 секунд (7.11.2010 - 02:41) Invis1ble написал(а):
kirik
Цитата
Тоесть можно указать: us-ascii//TRANSLIT как выходную кодировку

я так пробовал изначально.. результат - тот же самый notice ((
и //IGNORE на всякий случай пробовал - аналогично

P.s. В мануал я хожу, но к сожалению у меня с английским не очень, хотя чаще всего после некоторых мучений понимаю о чем идет там речь..

Спустя 43 минуты, 55 секунд (7.11.2010 - 03:25) kirik написал(а):
Invis1ble
У меня твой код выдает нотис и с //IGNORE тоже, а с //TRANSLIT работает нормально.

Спустя 12 часов, 2 минуты, 45 секунд (7.11.2010 - 15:28) Invis1ble написал(а):
kirik
Странно...
А может дело в каких-то настройках, например в php.ini? А .dll никакой подгружать не надо? unsure.gif

Спустя 1 час, 40 минут, 23 секунды (7.11.2010 - 17:08) Invis1ble написал(а):
Вроде .dll никакой не нужен, т.к. начиная с версии PHP 5.0 библиотека входит в состав самого php.
phpinfo() выдает следующее:
iconv support           enabled 
iconv implementation "libiconv"
iconv library version 1.11

Directive Local Value Master Value
iconv.input_encoding ISO-8859-1 ISO-8859-1
iconv.internal_encoding ISO-8859-1 ISO-8859-1
iconv.output_encoding ISO-8859-1 ISO-8859-1

Спустя 3 часа, 20 минут, 59 секунд (7.11.2010 - 20:29) kirik написал(а):
Invis1ble
у тебя так и не заработало? Если у тебя стоит денвер, мож из-за него (с ним всегда какие-то невообразимые проблемы возникают).

Спустя 28 минут, 51 секунда (7.11.2010 - 20:58) Invis1ble написал(а):
kirik
Не заработало.. (
Не, у меня не денвер.

Спустя 21 минута, 53 секунды (7.11.2010 - 21:20) kirik написал(а):
Invis1ble
Не знаю тогда..
Попробуй как альтернативное решение этот код.

Спустя 4 часа, 9 минут, 34 секунды (8.11.2010 - 01:30) Invis1ble написал(а):
kirik
альтернатива - это понятно, просто в одном из уроков по симфони используется в коде именно iconv(), так вот там у меня и выдавало нотайс, после чего я решил написать простенький тестовый код. После его написания обнаружилось, что он тоже выдает нотайс..

Спустя 33 минуты, 49 секунд (8.11.2010 - 02:03) Invis1ble написал(а):
kirik
Вот такой вопрос тогда, если у тебя работает мой тестовый код - напиши какая версия iconv library у тебя стоит, потому что я подозреваю, что это из-за нее бока

Спустя 4 часа, 11 минут, 37 секунд (8.11.2010 - 06:15) kirik написал(а):
У меня такое (под линуксом). php 5.3.3-2
iconv support	enabled
iconv implementation glibc
iconv library version 2.11.2

Спустя 7 часов, 54 минуты, 57 секунд (8.11.2010 - 14:10) Invis1ble написал(а):
kirik
Понял, буду на php 5.3 переходить, а то что-то на 5.2 засиделся )

Спустя 5 часов, 53 минуты, 42 секунды (8.11.2010 - 20:04) kirik написал(а):
Цитата (Invis1ble @ 8.11.2010 - 06:10)
Понял, буду на php 5.3 переходить

Если переход поможет решить проблему с кодировкой, то стоит smile.gif А если нет - толку нет, на большинстве хостингов 5.2 максимум стоит...


_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.