Как включить кирилицу при работе с базой данных

Изучаю пример создания блога в yii.

В базе данных sqlite имеется такая таблица:

[b]CREATE TABLE tbl_post

(

id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,


title VARCHAR(128) NOT NULL,


content TEXT NOT NULL,


tags TEXT,


status INTEGER NOT NULL,


create_time INTEGER,


update_time INTEGER,


author_id INTEGER NOT NULL,


CONSTRAINT FK_post_author FOREIGN KEY (author_id)


	REFERENCES tbl_user (id) ON DELETE CASCADE ON UPDATE RESTRICT

);[/b]

При вводе данных в текстовые поля, к примеру в поля title, content, на латитице все работает.

Если вводятся данные на русском регистре - поля остаются пустыми…

Вот конфигурация db-компоненты:

  [b]  'db'=>array(


        'class'=>'CDbConnection',


        'connectionString' => 'sqlite:'.dirname(__FILE__).'/../data/blog.db',


        'tablePrefix'=>'tbl_',


        'charset' => 'Windows-1251',


    ),[/b][b][/b]

Может кто-нибудь подсказать в чем тут дело ?


Нашел интересное, но, думаю, не окончательное решение.

В yii есть три внешние точки, где речь идет о charset:

  1. На уровне самого Web-приложения:

    Yii::createWebApplication($config);

    Yii::app()->charset=‘windows-1251’;

    Yii::app()->run();

  2. На уровне компоненты соединения с базой данных:

‘db’=>array(

   'class'=>'CDbConnection',


   'connectionString' => 'sqlite:'.dirname(__FILE__).'/../data/blog.db',


   'tablePrefix'=>'tbl_',


   '[b]charset' => 'windows-1251',[/b]


   )
  1. На уровне шаблона main.php:

meta http-equiv="Content-Type" content="text/html; charset=windows-1251

Уровень 1. является определяющим. Уровень 2. берет данные о наборе символов из уровня 1.,

в случае, если в нем самом не задан набор символов.

Уровень 3. отвечает за нормальный кирилический вывод данных.

При этом php.ini и тем более config.ini в Apache в этом плане я вообще никогда не

трогал после стандартной установки.


Однако это сработало только для моего локального варианта сайта.


Такой же учебный сайт хостируется на иностранном хосте, где

sqlite отсутствует и используется база данных mySql.

Вот там никакие примочки пока не помогают. Может быть это связано с тем, что на этом хосте

все в Linux ?


Чудеса ![color="#FF0000"][/color] Поставил на уровне 1. набор cp1251, а на уровне 2. вообще убрал задание набора символов

и все заработало ! [color="#FF0000"][b]А вот если набор cp1251 одновременно задать на уровне 2. и уровне 1. -кирилица исчезает…[/color]

[/b]


На локальном же сайте(127.0.0.1) под windows этого эффекта нет…


Махнуть рукой и идти дальше ?

С уважением - Новичек.

Попробуй где-нибудь вставить header(‘Content-Type: text/html; charset=windows-1251’), если поможет, надо будет в настройках веб-сервера или в .htaccess указать 1251 кодировкой по умолчанию

Вместо Yii::app()->charset=‘windows-1251’; можно задать это же значение в корне конфига (там где секции name, modules и т.п.)

А вообще, с UTF-8 проблем намного меньше.

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

в дальнейшем, возможно, все разрешится само собой. Пойду дальше…

в настройках подключения я указала


'charset' => 'cp1251',

Если в дополнение к этому я указываю


Yii::app()->charset='cp1251';

то кирилица пропадает.

Если убираю


'charset' => 'cp1251'

,

но оставляю


Yii::app()->charset='cp1251';

,

кирилица появляется.

Если убираю


Yii::app()->charset='cp1251';

,

но оставляю


'charset' => 'cp1251'

,

сайт загибается с ошибкой…

Apache на этом хостинге работает под Linux.

Вот мой учебный сайт - http://study-practice.co.cc/

и не уж то заработало?

я вот тоже сижу мучаюсь. Если в коннекте к бд указать, то выдаёт ошибку

00066: return htmlspecialchars($text,ENT_QUOTES,Yii::app()->charset);

Так хочется спросить это только мы вдвоём такие неудачники - или это просто кто-то делиться прочитанным материалом?

Спасибо, друг!

уууу, чуть не отказался от Oracle изза этого!

Помогло! Спасибо большое!