Несмотря на описанное ниже, надо стараться пользоваться utf-8 кодировками!
Для 4-го мускула и phpMyAdmin 2.6 и выше(?).
Протестировано на phpMyAdmin 2.6.1 и 2.6.3-pl1
Поехали!
Что надо сделать, чтобы иметь возможность активировать кодировку локализации Windows-1251?
1. Чтобы в списке "Language" получить не только UTF8-кодировки, но и другие, надо: добавить в начало /config.inc.php (/config.default.php)
=== begin
// Разрешаем использование не-UTF-8 кодировок (для совместимости с MySQL3).
define('PMA_REMOVED_NON_UTF_8', 1);
=== end
2. Чтобы при выборе неUTF8-кодировки (win-1251, например) phpMyAdmin не скидывал выбранную кодировку обратно в UTF8, надо:
внести изменения в файл /libraries/database_interface.lib.php (строка где-то 160-ая)
=== begin (вместо этого куска кода)
// If $lang is defined and we are on MySQL >= 4.1.x,
// we auto-switch the lang to its UTF-8 version (if it exists)
if (!empty($GLOBALS['lang']) && (substr($GLOBALS['lang'], -5) != 'utf-8')) {
$lang_utf_8_version = substr($GLOBALS['lang'], 0, strpos($GLOBALS['lang'], '-')) . '-utf-8';
if (!empty($GLOBALS['available_languages'][$lang_utf_8_version])) {
$GLOBALS['lang'] = $lang_utf_8_version;
$GLOBALS['charset'] = $charset = 'utf-8';
}
}
=== end
=== begin (вставить этот кусок кода, вместо указаного выше)
// If $lang is defined and we are on MySQL >= 4.1.x,
// we auto-switch the lang to its UTF-8 version (if it exists)
if (!defined('PMA_REMOVED_NON_UTF_8') && !empty($GLOBALS['lang']) && (substr($GLOBALS['lang'], -5) != 'utf-8')) {
$lang_utf_8_version = substr($GLOBALS['lang'], 0, strpos($GLOBALS['lang'], '-')) . '-utf-8';
if (!empty($GLOBALS['available_languages'][$lang_utf_8_version])) {
$GLOBALS['lang'] = $lang_utf_8_version;
$GLOBALS['charset'] = $charset = 'utf-8';
}
}
=== end
Фактически добавляется "
!defined('PMA_REMOVED_NON_UTF_8') && " в первую строку приведенного куска кода.