1

Тема: опять кодировка , о уже интереснее

Вообщем покурил форум пердварительно, но не нашел ответа решающий проблему.

Вообщем и так афигенно здоровенная база , гигов 10. объект ислледования таблица (2 гига)
Вообщем в одном из поле кодировка сбилась, при переезде на другой сервер. (когда то до меня)
Вообщем кодировка там в (теперь внимание) в ютф переконверченная в 1251. Вообщем задача, не понятно каким способом взять данное поле (столбец) переконвертировать из 1251 в ютф, (тем самым мы получим читаемый 1251 текст)


бабуС?Рє  вот такое у меня)  давно бы сдампил, но 10 гигов накладно, да и если можно дампить чисто таблицу 2 гига сдампить тоже не быстро, вариант тока какой нить перл или пхп скрипт который цепляется и поэтапно пробегает полтора миллиона записей)

Искал в нете, нашел тока скрипты которые меняют лишь тупо значение в таблице с 1251 на ютф, не конвертя сам текст...
вот такая проблема.

2

Re: опять кодировка , о уже интереснее

plakitin
В какой кодировке поля таблицы (сравнение)?

Важно! Нельлзя менять кодировку таблицы, это убьет данные. Не пытайтесь сделать это с помощью phpMyAdmin, или каких-то скриптов.

3

Re: опять кодировка , о уже интереснее

ну в таблице поля 1251. тока проблема в том читаемый текст можно получить лиш толкьое если его переконвертироваться в ютф

4

Re: опять кодировка , о уже интереснее

Сделайте тестовую таблицу скопировав структуру с той, в которой необходимо исправить данные, и скопируйте в нее немного строк.
Пропишите все переменные и поправьте запросы.

<?php

$do_rows = 100; // Прописать сколько строк обрабатывать за один запуск скрипта
$count_rows = 300; // Прописать сколько всего строк в таблице
mysql_connect('localhost', 'test', 'test'); // Прописать данные для подключения к MySQL
mysql_query('SET NAMES cp1251');
mysql_select_db('test'); // Прописать имя базы данных
set_time_limit(0);

$from = (empty($_POST['from'])) ? 0 : $_POST['from'];

?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>test</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<?php

if ($from < $count_rows) {
    // Выбираем данные из таблицы. Прописать имя таблицы и поле являющееся первичным ключом.
    $result = mysql_query('SELECT * FROM `test_iconv` ORDER BY `id` LIMIT ' . $from . ', ' . $do_rows);
    while ($row = mysql_fetch_assoc($result)) {
        // Конвертируем и обновляем. Прописать имя таблицы и одно или несколько полей с данными. Обновление необходимо делать по первичному ключу.
        mysql_query('UPDATE `test_iconv` SET `str` = "' . addslashes(iconv('utf-8', 'windows-1251//IGNORE', $row['str'])) . '" WHERE `id` = ' . $row['id']);
    }
    $from += $do_rows;
} else {
    echo '<h1>Конец</h1>';
}

?>
<form action="" method="post">
<input type="text" value="<?php echo $from; ?>" name="from" />
<input type="submit" value="Вперед" />
</form>
</body>
</html>

5

Re: опять кодировка , о уже интереснее

спасибо. получилось. респект