arthurpro
Новичок
Bitrix CMS в кодировке UTF-8
Если кто-то из читателей форума пользуется Bitrix CMS и интересовался когда-нибудь как его переконвертировать в кодировку UTF-8, чтобы создавать мультиязычные сайты без гемороя и использовать новые возможности MySQL 4.1.
Вот несколько простых шагов, которые необходимо выполнять в линуксе.
1. Необходимо взять исходники лицензионного битрикса (дистрибутив) и положить в отдельную директорию.
2. выполнить следующие команды в шелле
find <PATH_TO_BITRIX_DIST> -type f -regex '.*\.html?$' -exec /usr/bin/iconv -c -f windows-1251 -t utf-8 -o {}.utf8 {} \; ; \
find <PATH_TO_BITRIX_DIST> -type f -regex '.*\.php$' -exec /usr/bin/iconv -c -f windows-1251 -t utf-8 -o {}.utf8 {} \; ; \
find <PATH_TO_BITRIX_DIST> -type f -regex '.*\.txt$' -exec /usr/bin/iconv -c -f windows-1251 -t utf-8 -o {}.utf8 {} \; ; \
find <PATH_TO_BITRIX_DIST> -type f -regex '.*\.js$' -exec /usr/bin/iconv -c -f windows-1251 -t utf-8 -o {}.utf8 {} \; ; \
find <PATH_TO_BITRIX_DIST> -type f -regex '.*\.sql$' -exec /usr/bin/iconv -c -f windows-1251 -t utf-8 -o {}.utf8 {} \;
find <PATH_TO_BITRIX_DIST> -regex '.*\.utf8$' -exec sed -e 's/windows-1251/utf-8/ig' -i {} \;
find <PATH_TO_BITRIX_DIST> -type f -regex '.*\.utf8$' | sed -e 's/\.utf8$//g' | xargs -i mv -f '{}'.utf8 '{}'
3. Найти файл <PATH_TO_BITRIX_DIST>/bitrix/modules/main/classes/mysql/database.php и добавить строку
mysql_query("SET NAMES 'utf8'");
в методе Connect класса CDatabase перед строкой
if(!mysql_select_db($DBName, $this->db_Conn))
4. Далее в файле <PATH_TO_BITRIX_DIST>/bitrix/modules/main/tools.php необходимо добавить первой строкой
if (function_exists('mb_convert_case')) return mb_convert_case($str, MB_CASE_UPPER, "UTF-8");
в функции ToUpper
После этого битрикс готов к установке и функционированию, все документы будут в кодировке utf-8 и можно создавать сайты с поддержкой экзотических языков.
Примечание! База данных должна быть не менее MySQL 4.1 и МЕНЕЕ 5.0.12 с кодировкой utf8_general_ci.
В MySQL начиная с версии 5.0.12 произошли некоторые изменения в синтаксисе JOIN, чтобы максимально соответствовать стандарту SQL 2003, поэтому огромная часть запросов не работает.
По-мойму разработчики битрикса еще не пофиксили запросы, а у меня пока руки не дошли, т.к. я работаю на MySQL 4.1
Если кто-то из читателей форума пользуется Bitrix CMS и интересовался когда-нибудь как его переконвертировать в кодировку UTF-8, чтобы создавать мультиязычные сайты без гемороя и использовать новые возможности MySQL 4.1.
Вот несколько простых шагов, которые необходимо выполнять в линуксе.
1. Необходимо взять исходники лицензионного битрикса (дистрибутив) и положить в отдельную директорию.
2. выполнить следующие команды в шелле
find <PATH_TO_BITRIX_DIST> -type f -regex '.*\.html?$' -exec /usr/bin/iconv -c -f windows-1251 -t utf-8 -o {}.utf8 {} \; ; \
find <PATH_TO_BITRIX_DIST> -type f -regex '.*\.php$' -exec /usr/bin/iconv -c -f windows-1251 -t utf-8 -o {}.utf8 {} \; ; \
find <PATH_TO_BITRIX_DIST> -type f -regex '.*\.txt$' -exec /usr/bin/iconv -c -f windows-1251 -t utf-8 -o {}.utf8 {} \; ; \
find <PATH_TO_BITRIX_DIST> -type f -regex '.*\.js$' -exec /usr/bin/iconv -c -f windows-1251 -t utf-8 -o {}.utf8 {} \; ; \
find <PATH_TO_BITRIX_DIST> -type f -regex '.*\.sql$' -exec /usr/bin/iconv -c -f windows-1251 -t utf-8 -o {}.utf8 {} \;
find <PATH_TO_BITRIX_DIST> -regex '.*\.utf8$' -exec sed -e 's/windows-1251/utf-8/ig' -i {} \;
find <PATH_TO_BITRIX_DIST> -type f -regex '.*\.utf8$' | sed -e 's/\.utf8$//g' | xargs -i mv -f '{}'.utf8 '{}'
3. Найти файл <PATH_TO_BITRIX_DIST>/bitrix/modules/main/classes/mysql/database.php и добавить строку
mysql_query("SET NAMES 'utf8'");
в методе Connect класса CDatabase перед строкой
if(!mysql_select_db($DBName, $this->db_Conn))
4. Далее в файле <PATH_TO_BITRIX_DIST>/bitrix/modules/main/tools.php необходимо добавить первой строкой
if (function_exists('mb_convert_case')) return mb_convert_case($str, MB_CASE_UPPER, "UTF-8");
в функции ToUpper
После этого битрикс готов к установке и функционированию, все документы будут в кодировке utf-8 и можно создавать сайты с поддержкой экзотических языков.
Примечание! База данных должна быть не менее MySQL 4.1 и МЕНЕЕ 5.0.12 с кодировкой utf8_general_ci.
В MySQL начиная с версии 5.0.12 произошли некоторые изменения в синтаксисе JOIN, чтобы максимально соответствовать стандарту SQL 2003, поэтому огромная часть запросов не работает.
По-мойму разработчики битрикса еще не пофиксили запросы, а у меня пока руки не дошли, т.к. я работаю на MySQL 4.1