CakePHP и utf8
17/09/2010

Для того чтобы ваш сайт на CakePHP корректно работал с кодировкой utf8, необходимо сделать четыре вещи:

1. Идем в файл app/config/database.php и меняем значение ключа "encoding" на "utf8":

class DATABASE_CONFIG {

	var $default = array(
		'driver' => 'mysql',
		'persistent' => true,
		'host' => 'localhost',
		'login' => 'root',
		'password' => 'password',
		'database' => 'cake_db',
		'prefix' => '',
		'encoding' => 'utf8'
	);
}

И не забудьте удостовериться, что база данных, которую использует кейк, в кодировке utf8 (я использую utf8_general_ci).

2. Теперь откройте файл app/config/core.php и ищем параметр конфигурации "App.encoding". Меняем его на "utf-8".

/**
 * Application wide charset encoding
 */
Configure::write('App.encoding', 'utf-8');

3. Проверьте все ваши layouts, которые использует сайт. В заголовках страниц обязательно должна указываться кодировка utf-8:

<head>
    <!-- ... -->
    <?php echo $html->charset('utf-8'); ?>
    <!-- ... -->
</head>

4. И последнее, про это чаще всего забывают, - кодировка сервера. Если лень лезть в конфиги апача, можете просто добавить в корневой .htaccess строчку "AddDefaultCharset UTF-8":

<IfModule mod_rewrite.c>
   RewriteEngine on
   RewriteRule    ^$ app/webroot/    [L]
   RewriteRule    (.*) app/webroot/$1 [L]
</IfModule>

AddDefaultCharset UTF-8

Все примеры данной статьи гарантированно будут работать только для CakePHP 1.2.х и 1.3.х.

Опубликовано в категории CakePHP | Теги: CakePHP, PHP, utf8

Добавить комментарий