Проблема с кодировкой.

Проблема возникает при чтении и записи русского текста в MySql(4.1.21) (php 5.2.0)

прочёл cookbook

  1. кодировка php файлов utf8;

  2. У таблицы charset utf8;

  3. в конфиге тоже charset utf8;

  4. в .htaccess прописан AddDefaultCharset UTF-8

  5. в php.ini

    mbstring.func_overload "7"

    mbstring.internal_encoding "UTF-8"

При этом если добавляю запись через AR прим.:




$test=new Test();

$test->name="Привет";

$test->save();



при сохранении в базу вместо символов пишутся знаки вопроса .

Если вручную внести в базу запись с русскими буквами (доавлял через (sql manager))

то после их выборки выводятся такие символы "Ïðèâåò" //"Привет"

Если кто-нибуть может подсказать в чём проблема, буду благодарен.

Сложно ответить, луче приводить кусок кода и писать что он с конфига чем написать что "в конфиге тоже charset utf8", возможно вы где-то там отпечатались…

Попробуйте в index.php первой строкой прописать header("Content-type:text/html;charset=utf-8");

в конфиге должен быть именно ‘charset’=>‘utf8’, а не ‘charset’=>‘utf-8’,

убедитесь что в MySQL для таблицы выставлен правильный метод сравнения.

намёк понял но боюсь я не опечатался.

в конфиге




'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=‘Привет’"

Прошу прощения за безграмотность, но что такое "метод сравнения" таблицы ?

см. пример создания таблицы:

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

Спасибо за ссылку, самое оно :)