Rarex
(Rarex Dew)
August 3, 2009, 1:43pm
1
Проблема возникает при чтении и записи русского текста в MySql(4.1.21) (php 5.2.0)
прочёл cookbook
кодировка php файлов utf8;
У таблицы charset utf8;
в конфиге тоже charset utf8;
в .htaccess прописан AddDefaultCharset UTF-8
в php.ini
mbstring.func_overload "7"
mbstring.internal_encoding "UTF-8"
При этом если добавляю запись через AR прим.:
$test=new Test();
$test->name="Привет";
$test->save();
при сохранении в базу вместо символов пишутся знаки вопроса .
Если вручную внести в базу запись с русскими буквами (доавлял через (sql manager))
то после их выборки выводятся такие символы "Ïðèâåò" //"Привет"
Если кто-нибуть может подсказать в чём проблема, буду благодарен.
mc.aser
(Asergiychuk)
August 3, 2009, 2:10pm
2
Сложно ответить, луче приводить кусок кода и писать что он с конфига чем написать что "в конфиге тоже charset utf8", возможно вы где-то там отпечатались…
Попробуйте в index.php первой строкой прописать header("Content-type:text/html;charset=utf-8");
в конфиге должен быть именно ‘charset’=>‘utf8 ’, а не ‘charset’=>‘utf-8 ’,
убедитесь что в MySQL для таблицы выставлен правильный метод сравнения.
Rarex
(Rarex Dew)
August 3, 2009, 2:26pm
3
намёк понял но боюсь я не опечатался.
в конфиге
'db'=>array(
'class'=>'CDbConnection',
'connectionString'=>'mysql:host=localhost;dbname=uni',
'username'=>'root',
'password'=>'',
'enableParamLogging'=>'true',
'charset'=>'utf8'
)
"header("Content-type:text/html;charset=utf-8");" - сделал но текст так и выводится некорректно
(echo выводит русский текст корректно. "Ïðèâåò" выводится только при выводе значения атрибута)
Еще trace запроса на сохранения параметр отображается нормальными символами
"Executing SQL: INSERT INTO test
(name
) VALUES (:yp0). Bind with
parameter :yp0=‘Привет’"
Прошу прощения за безграмотность, но что такое "метод сравнения" таблицы ?
duke1999
(Duke1999)
August 4, 2009, 6:09am
4
см. пример создания таблицы:
CREATE TABLE Category
(
id
int(11) NOT NULL AUTO_INCREMENT,
name
varchar(128) COLLATE utf8_unicode_ci NOT NULL DEFAULT ‘’,
description
text COLLATE utf8_unicode_ci NOT NULL,
is_visible
int(1) unsigned NOT NULL DEFAULT ‘0’,
PRIMARY KEY (id
)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
почитать про COLLATE
вот тут доступным языком всё разжёвано: http://www.lissyara.su/?id=1655
Rarex
(Rarex Dew)
August 5, 2009, 10:27am
5
Спасибо за ссылку, самое оно