Проблемы с кодировкой в MySQL 5

Статус
В этой теме нельзя размещать новые ответы.

Dr. Morg

Постоялец
Регистрация
26 Дек 2006
Сообщения
55
Реакции
26
Столкнулся с проблемой при переходе с MySQL 4.1 на MySQL 5 в БД весь русский текст отображается как надо, а в магазине всё вопросительными знаками.

Решение нашёл следующее:

В файлы:
admin.php
cart.php
category.php
get_file.php
index.php
invoice.php
invoice_jur.php
invoice_phys.php
linkpoint.php
option_value_configurator.php
printable.php
products.php
wishlist.php
после строк:

Вставляем:

Если используете кодировку, отличную от Windows-1251, то вместо cp1251 подставить соответственно вашу.
 
Эм… На хостинге был установлен Shop-Script FREE и вот с ним фокус почему-то не удался, он вообще грузится перестал.:nezn: Можете что-то подсказать? :ah:
 
Беда в том что у меня и в базе данный все пишется знаками вопроса… Может это что-то в настройках MySQL?
 
Беда в том что у меня и в базе данный все пишется знаками вопроса… Может это что-то в настройках MySQL?

Тогда попробуйте в самой базе поставить в сравнении юникод (UTF-8). Если не получится, то отпиште сюда, подумаем еще.
 
Пробивал и нечего не изменилось.
 
Была похожая ситуация. Проблема заключалась в том, что сама SQL база была создана в левой кодировке, не поддерживающий русский. Пересоздал базу в utf-8 и все заработало.
Если хочешь проверить в чем проблема, возми у кого-нить готовую базу и экспортируй через phpMyAdmin.
 
А как правильно пересоздать базу в utf8? У меня почему-то она все ровно пересоздается в левой кодировке…
 
У всех таблиц и у всех филдоф есть codepage. наверно latin1_swedish_ci

вот скрипт

Код:
<?php
 
// this script will output the queries need to change all fields/tables to a different collation
// it is HIGHLY suggested you take a MySQL dump prior to running any of the generated
// this code is provided as is and without any warranty
 
die("Make a backup of your MySQL database then remove this line");
 
set_time_limit(0);
 
// collation you want to change:
$convert_from = 'latin1_swedish_ci';
 
// collation you want to change it to:
$convert_to   = 'utf8_general_ci';
 
// character set of new collation:
$character_set= 'utf8';
 
$show_alter_table = true;
$show_alter_field = true;
 
// DB login information
$username = 'user';
$password = 'password';
$database = 'databse';
$host     = 'localhost';
 
mysql_connect($host, $username, $password);
mysql_select_db($database);
 
$rs_tables = mysql_query(" SHOW TABLES ") or die(mysql_error());
 
print '<pre>';
while ($row_tables = mysql_fetch_row($rs_tables)) {
    $table = mysql_real_escape_string($row_tables[0]);
    
    // Alter table collation
    // ALTER TABLE `account` DEFAULT CHARACTER SET utf8
    if ($show_alter_table) {
        echo("ALTER TABLE `$table` DEFAULT CHARACTER SET $character_set;\r\n");
    }
 
    $rs = mysql_query(" SHOW FULL FIELDS FROM `$table` ") or die(mysql_error());
    while ($row=mysql_fetch_assoc($rs)) {
        
        if ($row['Collation']!=$convert_from)
            continue;
 
        // Is the field allowed to be null?
        if ($row['Null']=='YES') {
            $nullable = ' NULL ';
        } else {
            $nullable = ' NOT NULL';
        }
 
        // Does the field default to null, a string, or nothing?
        if ($row['Default']==NULL) {
            $default = " DEFAULT NULL";
        } else if ($row['Default']!='') {
            $default = " DEFAULT '".mysql_real_escape_string($row['Default'])."'";
        } else {
            $default = '';
        }
 
        // Alter field collation:
        // ALTER TABLE `account` CHANGE `email` `email` VARCHAR( 50 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL
        if ($show_alter_field) {
            $field = mysql_real_escape_string($row['Field']);
            //echo "ALTER TABLE `$table` CHANGE `$field` `$field` $row[Type] CHARACTER SET $character_set COLLATE $convert_to $nullable $default; \r\n";
            echo "ALTER TABLE `$table` CHANGE `$field` `$field` $row[Type] CHARACTER SET $character_set COLLATE $convert_to; \r\n";
        }
    }
}
 
?>
 
Спасибо! Все работает!
 
Ничего не помогло. Есть еще варианты?
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху