CodeIgniter и кодировка utf-8. Работа с текстом в кодировке utf-8
Недавно делал проект на CodeIgniter. Пришлось столкнутся с весьма неожиданной проблемой – в настройках была опция кодировки сайта – но она не работала, и CodeIgniter полагался на настройки сервера при отображении текста. Пришлось это дело исправлять.
Способов много, я напишу о трех:
1. Самый правильный на мое мнение способ – использование хуков. Это позволит хранить название кодировки сайта в файле настроек. Для этого нужно:
- в файле настроек config.php включить хуки
$config['enable_hooks'] = TRUE;
- в файле хуков создать новый
$hook['pre_controller'] = array( 'class' => 'pageEncoding', 'function' => 'headerUTF8', 'filename' => 'pageEncoding.php', 'filepath' => 'hooks', 'params' => array() );
- создать файл pageEncoding.php в папке hooks со следующим содержанием:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); class pageEncoding extends CI_Hooks { function headerUTF8($params) { $CFG =& load_class('Config', 'core'); header('Content-type: text/html; charset=' . $CFG->item('charset')); } }
Все. Должно работать хорошо.
2. Прописать настройки в файл .htaccess корня сайта
AddDefaultCharset UTF-8
но этот способ очень плохой и при переносе на другой хостинг может перестать заработать.
3. Жестко прописать кодировку в файле index.php.
header('Content-type: text/html; charset=utf-8' );Минус этого – заголовок независим от настроек сайта.







REPLY))
Огромное спасибо!! Помог вариант с хуками, а то при переносе на другой хостинг были одни кракозябры))
REPLY))
Большое спасибо. Пока только изучаю php, denwer…. Помогло с index.php
REPLY))
рекомендую делать с помощью хуков, с index.php это быстрый вариант, но правильней будет хуками
REPLY))
Мегаспасибо за хуки!!!