UTF-8 переход движка

Userpic

Новичок
UTF-8 переход движка

Доброго времени суток.
Вот начитался статей про мультиязычность и чем больше читаешь тем больше не понимаешь. Вообщем каша у меня. Помогите разжевать ее.
Как я понял необходимо сделать следующие шаги:
1. Все языковые файлы в которых массив перевода необходимо конвертануть в UTF-8. Причем конвертануть нужно все языки кроме ангилйского.
2. Тоже самое сделать с контентом в базе (меню, разделы, и т.п.)
3. <meta http-equiv="content-type" content="text/html; charset=UTF-8">
Вопросы:
1. Достаточно ли этих шагов или еще нужны 2 функции которые выполняют iconv для записи в БД и вывода из нее?
2.Сложности в том что используется шаблонизатор Смарти.
Как тут поступить правильно?
3. Подскажите программу конвертер файлов
4. Что еще я пропустил?

Спасибо.
 

kvf77

Red Devil
если у тебя ВСЕ данные будут только в UTF-8, то никаких iconv как правило не понадобится - потому что нет перекодировок данных
конвертеров миллион - просто введи в яндексе.
в остальном же все правильно понял
 

Userpic

Новичок
kvf77
спасибо
получается со Смарти все решается автоматически
данные, если нужно конвертятся при вводе, а при выводе можно даже не использовать вторую функцию.
 

texrdcom

Новичок
Любые функции str надо переписать на mb_str...
Имееться виду там где они работают с русским текстом.
(http://ua2.php.net/manual/ru/ref.mbstring.php Смотри таблица 2)
Учитываем поправки в полях базы так если где храниться русский текст и он будет в utf-8 надо поля увеличить в дважды!
 

Userpic

Новичок
texrdcom
Использовать mb_str* обязательно? Я просто не уверен что на хостинге будет стоять поддержка MB, а в движке есть str* функции.
Совсем запутался :)
 

texrdcom

Новичок
Userpic
Давай проще есть переменная с текстом
PHP:
// Каждый не латинський символ в uft-8 занимает два байта
// отсюда получаем что если нам нужна длина строчки то 
// мы получим двойное значения пример:

$text='проба'; // Имеет 5 символов
echo strlen($text)."\r\n";// Вернет 10
echo mb_strlen($text, 'utf-8'); // Верент 5 - как и есть !
// Чтобы не указывать кодировку в mb_strlen ! 
// в начале файла пишем!
mb_regex_encoding('UTF-8');
ini_set('mbstring.internal_encoding', 'UTF-8'); 
// И  делаем так чтоб такие строки были везде! в началах файлов
// Еще учитывай что при использовании многобайтовых кодировок
// в функция
preg_('/что то /u') // Обезательно указываем ключ u - !
// А так проблем нет
mbstring практически всегда включен на хостингах - если нет
меняем хостера либо просим включить!
а вообще phpinfo() все роскажет :)
И почитай ссылку именно таблицу два више ! если применяються с таблици любые функции str(и не только) их надо заменить на соответсвующие mb_ или включить в php.ini
mbstring.func_overload=7; Если конечно получиться :)
 

Userpic

Новичок
texrdcom
спасибо.
еше вопрос: а как можно сделать проверку скомпилирован хостинг с MB или нет и соотв. работать?
И еще просьба подскажите ссылку на простой перекодировщик, можно даже по типу exe файла с параметрами файла-текста и направления конвертации
Спасибо
 

texrdcom

Новичок
я перекодировал когда надо было текст скриптом php
чатем директорию открываем файл перекодируем iconv()
и записываем напиши сам, но наверное есть гдето перекодировщики ищи yandex!
еше вопрос: а как можно сделать проверку скомпилирован хостинг с MB или нет и соотв. работать?
Я писал дословно делаем файл
test.php
в нем:
PHP:
<?php
phpinfo();
?>
И читаем ! есть упоминания mbstring() все ок. !
 

Userpic

Новичок
Я писал дословно делаем файл
test.php
в нем:

<?php
phpinfo();
?>

И читаем ! есть упоминания mbstring() все ок. !
:) Я понял юмор, но интересует возможность это сделать в скрипте по типу if(ini_set(...))
 
Сверху