Изучаю пример создания блога в 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:
-
На уровне самого Web-приложения:
Yii::createWebApplication($config);
Yii::app()->charset=‘windows-1251’;
Yii::app()->run();
-
На уровне компоненты соединения с базой данных:
‘db’=>array(
'class'=>'CDbConnection',
'connectionString' => 'sqlite:'.dirname(__FILE__).'/../data/blog.db',
'tablePrefix'=>'tbl_',
'[b]charset' => 'windows-1251',[/b]
)
- На уровне шаблона 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 этого эффекта нет…
Махнуть рукой и идти дальше ?
С уважением - Новичек.