Отправляет email-рассылки с помощью сервиса Sendsay

Создание сайтов на Python

  Все выпуски  

Пишем мультиязычный сайт (подготовка, часть 1).


Пишем мультиязычный сайт (подготовка, часть 1).
Zend Framework для работы с БД.

Недавно перевел свои скрипты из кодировки Windows-1251 (cp1251) в кодировку UTF8. Это позволяет в дальнейшем использовать единую кодировку для любого языка интерфейса. При этом вы уверены, что текст страницы вашего сайта могут прочесть американцы и китайцы, у которых не установлена поддержка русского языка.

Для перевода вашего проекта с кодировки Windows-1251 на UTF8 потребуется:

         Установить кодировку вашей базы данных (БД) в UTF8. Это можно сделать для всей БД, либо для конкретной создаваемой таблицы. Далее, в вашем PHP скрипте выполните два запроса сразу после соединения с БД:  «SET CHARACTER SET utf8» и «SET NAMES utf8». Это гарантирует что теперь вы получаете данные из БД в нужной кодировке независимо от того, в какой кодировке данные хранятся в БД.

         Все ваши файлы проекта, включая php и tpl (Smarty) файлы перевести в кодировку UTF8. Для этого открываем файл в блокноте в читаемой кодировке, и сохраняем его «Сохранить как…» выбирая опцию «Кодировка UTF8». Все файлы требуется перезаписать в этой кодировке.

         Сказать веб обозревателю клиента, что работаем мы с данной кодировкой. Для этого выполним два шага: в самом начале php скрипта укажем «Header('Content-Type: text/html; charset=UTF-8');», второй шаг – в заголовке html документа укажем кодировку браузеру «<meta http-equiv="Content-Type" content="text/html; charset=utf-8">».

Привожу пример выше сказанного при использовании Zend_DB (вместо mysql_* функцияй):

<?

// create database object
$objDB = Zend_Db::factory( 'PDO_MYSQL',  …параметры… );
// устанавливаем нужную кодировку для получения данных из БД
$objDB->query('SET CHARACTER SET utf8');
$objDB->query('SET NAMES utf8');
// устанавливаем нужную кодировку для вывода данных в браузер
Header('Content-Type: text/html; charset=UTF-8');
// выводим текст документа

?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>

        <title>Ваш сайт</title>

        <meta http-equiv="Content-Language" content="ru">

        <!-- говорим браузеру об используемой кодировке -->

        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">

</head>

<body>
<
h1>Русский текст отображается нормально!</h1>
</body>
</html>

Если в веб обозревателе (браузере) появляются непонятные значки, то знайте что это текст, выведенный в другой кодировке, отличной от UTF8. Найдите файл, который содержит текст в кодировке, отличной от UTF8 и перезапишите его в кодировке UTF8.

 Рекомендую перевести ваши текущие проекты на данную кодировку, чтобы у вас в дальнейшем не возникало проблем при работе с многоязычными сайтами. Желаю вам стремительного развития!

 

 

Я уже упоминал о Zend Framework в своих предыдущих публикациях. Прошло время, я поработал с этим продуктом, и могу рассказать об этом продукте еще больше. Итак, фреймворк действительно большой и имеет почти все инструменты, которые вам могут понадобиться при создании нового сайта. При этом целесообразно использовать фреймворк для создания крупных сайтов с множеством сервисов. Это вызвано тем, что в маленьких проектах фреймворк выглядит гигантом из тысячи файлов. Однако для крупного проекта фреймворк занимает лишь небольшую часть проекта, и не кажется таким большим, когда на одной странице сайта выводятся 20 разных сервисов.

 

Сам работал в PDO_MYSQL, затем его мне не хватило, и пришлось все же перейти на ZendFramework, его компонент Zend_Db. Вначале были проблемы в работе с русской кодировкой, однако эта проблема быстро решилась использованием запросов с указанием нужной нам кодировки (в примере выше я привел это в строках 5 и 6).

 

Для выполнения запросов в фреймворке предусмотрены разные инструменты, которые устроены по-разному. Но при этом результат будет одинаков, каким бы вы инструментом не воспользовались. Выбирайте те инструменты, которые вам ближе. Скажу честно, в одних частях программы я использую одни конструкции для запросов к БД, а в других использую другие. Таким образом, для сложных запросов лучше использовать компонент Zend_Db_Select, который интуитивно понятнее стандартного SQL запроса (в одну строку). Надеюсь, вы начнете использовать данный компонент фреймворка и поделитесь своими впечатлениями с нами.

 

Сам фреймворк и русскую документации, к нему всегда можно загрузить с сайта http://framework.zend.com.


Предлагайте свои темы для следующей рассылки, пишите мне на waps[щенок]pisem.net.


В избранное