Joomla + VirtueMart: проблемы с кодировкой

Попытка решить поблему комплексным подходом.
На примере версий Joomla! 1.0.8.2 RUS ParanoiaMCE VirtueMart v1.0.4, *никсовый вариант

Меняем кодировку в базе:
ALTER DATABASE `database` DEFAULT CHARACTER SET cp1251 COLLATE cp1251_general_ci;
Идем в следующие файлы:
administrator/components/com_virtuemart/header.php: строка 329 приводится к виду
$menu_code = htmlentities( $menu_code, ENT_NOQUOTES, 'cp1251' );
Дальше только файлы, и номера строк, все изменения аналогичны.
administrator/components/com_virtuemart/classes/htmlTools.class.php:544 и 547
administrator/components/com_virtuemart/classes/language.class.php:41
administrator/components/com_virtuemart/classes/ps_html.php:247
administrator/components/com_virtuemart/classes/ps_product.php:1892
administrator/components/com_virtuemart/classes/ps_vendor.php:357

В файле
administrator/components/com_virtuemart/languages/russian.php строка 34 приводится к виду
var $_PHPSHOP_SUBMIT = 'Отправить';
В файле
/etc/init.d/mysql: (или где у Вас скрипт запуска MySQL)
там, где собственно запуск, в районе секции “Start” (добавление выделено курсивом:
$bindir/mysqld_safe --datadir=$datadir --pid-file=$pid_file –default-character-set=cp1251

на всякий случай, не уверен, что это необходимо:
/etc/php.iniв секции Data Handling:
default_charset = "cp1251"
Обновление 24/05/2006:
Внимание! В некоторых источниках указывают, что нужно в MySQL выполнить команду
ALTER Table jos_vm_tablename DEFAULT CHARACTER SET cp1251;
ЭТО ОШИБКА. Обьясняю на примере jos_vm_module:
в консоли выполните
show create table jos_vm_module;
Изначально результат такой:
CREATE TABLE `jos_vm_module` (
`module_id` int(11) NOT NULL auto_increment,
`module_name` varchar(255) default NULL,
`module_description` text,
`module_perms` varchar(255) default NULL,
`module_publish` char(1) default NULL,
`list_order` int(11) default NULL,
PRIMARY KEY (`module_id`),
KEY `idx_module_name` (`module_name`),
KEY `idx_module_list_order` (`list_order`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT=’VirtueMart Core Modules, not: Joomla modules’

Если выполнить приведеный выше код, то после этой же комманды результат будет таким:
CREATE TABLE `jos_vm_module` (
`module_id` int(11) NOT NULL auto_increment,
`module_name` varchar(255) character set latin1 default NULL,
`module_description` text character set latin1,
`module_perms` varchar(255) character set latin1 default NULL,
`module_publish` char(1) character set latin1 default NULL,
`list_order` int(11) default NULL,
PRIMARY KEY (`module_id`),
KEY `idx_module_name` (`module_name`),
KEY `idx_module_list_order` (`list_order`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 COMMENT=’VirtueMart Core Modules, not: Joomla modules’;

Пока до меня дошло это проверить, я уже бегал по потолку :(
Правильной командой будет
ALTER Table jos_vm_module CONVERT TO CHARACTER SET cp1251 COLLATE cp1251_general_ci;
Результат:
CREATE TABLE `jos_vm_module` (
`module_id` int(11) NOT NULL auto_increment,
`module_name` varchar(255) default NULL,
`module_description` text,
`module_perms` varchar(255) default NULL,
`module_publish` char(1) default NULL,
`list_order` int(11) default NULL,
PRIMARY KEY (`module_id`),
KEY `idx_module_name` (`module_name`),
KEY `idx_module_list_order` (`list_order`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 COMMENT=’VirtueMart Core Modules, not: Joomla modules’

Аналогичной командой надо пройтись по всем таблицам jos_vm_*

Обновление 24/07/2006: Если у Вас UTF-8, вот тут рекомендуют в /administrator/components/com_virtuemart/header.php закомментировать
$menu_code = htmlentities( $menu_code, ENT_NOQUOTES );
но я не уверен, что это хорошее решение.

Ссылки по теме:
Общие вопросы по любым версиям “Joomla” (сайта Joomla Paranoia MCE!)
Форум русской поддержки Joomla! CMS, раздел VirtueMart
http://forum.joom.ru/index.php/board,33.0.html - форум на joom.ru, раздел по Virtue Mart.
VirtueMart форум по-английски

One Response to “Joomla + VirtueMart: проблемы с кодировкой”

  1. Timerman Says:

    Спасибо.
    [quote]Меняем кодировку в базе:
    ALTER DATABASE `database` DEFAULT CHARACTER SET cp1251 COLLATE cp1251_general_ci;[/quote]
    Этого оказалось достаточно для перекодирования VM 1.1.2 + JOOSTINA

Оставить комментарий - Feel free to ask me in English

Он появится после того, как будет одобрен. - All comments are pre-moderated.

Внимание! Пожалуйста, не пишите в комментарии [url=... или [url]... - это будет считаться спамом. Если хотите дать ссылку - пишите просто адрес, до 2х на один коммент.
Attention! Please don't use "[url=..." or "[url]..." in comment's body or it will be deleted as spam
If you want to send me a link just type url, up to 2 urls in one comment.

Спасибо за отзыв! Thank you for a comment!