Битая кодировка всех сообщений у пользователя
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение
).
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение
-
vlaimir
- phpBB 1.0.0
- Сообщения: 6
- Стаж: 15 лет 1 месяц
Битая кодировка всех сообщений у пользователя
Перешел с phpBB2 на phpBB3, в результате у одного пользователя все сообщения в другой кодировке. Как можно это исправить?
Ручками через декодер накладно, много сообщений.
Ручками через декодер накладно, много сообщений.
-
Sheer
- Former team member
- Сообщения: 12113
- Стаж: 19 лет 7 месяцев
- Откуда: Калининград не Кенигсберг
- Благодарил (а): 54 раза
- Поблагодарили: 2756 раз
Re: Битая кодировка всех сообщений у пользователя
В какой?vlaimir писал(а):в другой кодировке
Написать скрипт.vlaimir писал(а):Ручками через декодер накладно, много сообщений.
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
-
vlaimir
- phpBB 1.0.0
- Сообщения: 6
- Стаж: 15 лет 1 месяц
Re: Битая кодировка всех сообщений у пользователя
Кодировка, как я понимаю: CP1252 у всех сообщений одного пользователя.
-
Sheer
- Former team member
- Сообщения: 12113
- Стаж: 19 лет 7 месяцев
- Откуда: Калининград не Кенигсберг
- Благодарил (а): 54 раза
- Поблагодарили: 2756 раз
Re: Битая кодировка всех сообщений у пользователя
Попробуй так
Где ид_пользователя = id пользователя с битой кодировкой.
NB! Предварительно сделать резервную копию!
Код: Выделить всё
<?php
header('Content-Type: text/html; charset=UTF-8');
define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
$user->session_begin();
$sql = 'SELECT * FROM ' .POSTS_TABLE. ' WHERE poster_id = ид_пользователя';
$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result))
{
$new = iconv("UTF-8", "CP1251//IGNORE", $row['post_text']);
$sqlc = "UPDATE " .POSTS_TABLE. " SET post_text = '.$new.' WHERE poster_id = ид_пользователя";
$res = $db->sql_query($sqlc);
}
?>NB! Предварительно сделать резервную копию!
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
-
vlaimir
- phpBB 1.0.0
- Сообщения: 6
- Стаж: 15 лет 1 месяц
Re: Битая кодировка всех сообщений у пользователя
Получил
General Error
SQL ERROR [ mysql4 ]
Incorrect string value: '\x96 ...' for column 'post_text' at row 1 [1366]
An sql error occurred while fetching this page. Please contact an administrator if this problem persists.
General Error
SQL ERROR [ mysql4 ]
Incorrect string value: '\x96 ...' for column 'post_text' at row 1 [1366]
An sql error occurred while fetching this page. Please contact an administrator if this problem persists.
-
Sheer
- Former team member
- Сообщения: 12113
- Стаж: 19 лет 7 месяцев
- Откуда: Калининград не Кенигсберг
- Благодарил (а): 54 раза
- Поблагодарили: 2756 раз
Re: Битая кодировка всех сообщений у пользователя
Посыпаю голову пеплом, ибо
поменяйте
на
и посмотрите, какое значение принимает переменная
и на всякий случай проверьте кодировку http://www.artlebedev.ru/tools/decoder/
, а я воткнул 1251vlaimir писал(а):как я понимаю: CP1252
поменяйте
Код: Выделить всё
$new = iconv("UTF-8", "CP1251//IGNORE", $row['post_text']); Код: Выделить всё
$new = iconv("UTF-8", "CP1252//IGNORE", $row['post_text']); $new
Код: Выделить всё
print "$new<br />"; Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
-
vlaimir
- phpBB 1.0.0
- Сообщения: 6
- Стаж: 15 лет 1 месяц
Re: Битая кодировка всех сообщений у пользователя
Текст printom выводит правильный, если убрать первую строчку:Sheer писал(а):и посмотрите, какое значение принимает переменная $new
header('Content-Type: text/html; charset=UTF-8');
но при вставке в базу опять выдает ошибку:
SQL ERROR [ mysql4 ]
Incorrect string value: 'xCFxF0xE8 xE8xF1...' for column 'post_text' at row 1 [1366]
Добавлено спустя 1 минуту 28 секунд:
раскодирует исходник, пишет:Sheer писал(а):и на всякий случай проверьте кодировку
CP1252 → CP1251
-
Sheer
- Former team member
- Сообщения: 12113
- Стаж: 19 лет 7 месяцев
- Откуда: Калининград не Кенигсберг
- Благодарил (а): 54 раза
- Поблагодарили: 2756 раз
Re: Битая кодировка всех сообщений у пользователя
Выложите тут (или в ЛС) дамп таблицы posts с выборкой сообщений этого конкретного пользователя.
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
-
vlaimir
- phpBB 1.0.0
- Сообщения: 6
- Стаж: 15 лет 1 месяц
Re: Битая кодировка всех сообщений у пользователя
Один из постов.
Код: Выделить всё
-- Дамп данных таблицы `phpbb3_posts`
--
INSERT INTO `phpbb3_posts` (`post_id`, `topic_id`, `forum_id`, `poster_id`, `icon_id`, `poster_ip`, `post_time`, `post_approved`, `post_reported`, `enable_bbcode`, `enable_smilies`, `enable_magic_url`, `enable_sig`, `post_username`, `post_subject`, `post_text`, `post_checksum`, `post_attachment`, `bbcode_bitfield`, `bbcode_uid`, `post_postcount`, `post_edit_time`, `post_edit_reason`, `post_edit_user`, `post_edit_count`, `post_edit_locked`) VALUES
(6195, 1003, 2, 1680, 0, '62.141.50.149', 1190465881, 1, 0, 0, 0, 1, 0, '', 'Êîððåêòèðîâêà ÿðêîñòè â InnerPulse', 'Ïðè èñïîëüçîâàíèè InnerPulse ñîâìåñòíî ñ î÷êàìè Premium (áåëûå) íàáëþäàåòñÿ íåðàâíîìåðíîñòü ñâå÷åíèÿ ïðàâîé è ëåâîé ãðóïï ñâåòîäèîäîâ. \r\n\r\nÝôôåêò íàèáîëåå çàìåòåí ïðè óìåíüøåíèè óðîâíÿ ÿðêîñòè ðåãóëÿòîðîì – ñíà÷àëà âûêþ÷àåòñÿ ïðàâàÿ ãðóïïà ñâåòîäèîäîâ, è, òîëüêî ïðè äàëüíåéøåì óìåíüøåíèè ÿðêîñòè, – ëåâàÿ.\r\nÈñïîëüçîâàíèå âñòðîåíîé â InnerPulse êîððåêòèðîâêè ÿðêîñòè (ìåíþ oPL) íå ïîçâîëÿåò ïîëíîñòüþ óñòðàíèòü ïðîáëåìó – ìîæíî âûðîâíÿòü ÿðêîñòè ñâåòîäèîäîâ ïðè çàôèêñèðîâàííîì ïîëîæåíèè îáùåãî ðåãóëÿòîðà ÿðêîñòè, îäíàêî, ïðè ïîñëåäóþùåì èçìåíåíè îáùåãî óðîâíÿ, ÿðêîñòü ãðóïï îïÿòü ñòàíîâèòñÿ íåðàâíîìåðíîé. Òàêæå, èçìåíåíèå ÿðêîñòè â ïðîöåññå âîñïðîèçâåäåíèÿ ïðåñåòîâ òîæå ïðèâîäèò ê íåðàâíîìåðíîñòè ñâå÷åíèÿ ñâåòîäèîäîâ. Ïîõîæå, âñòðîåíàÿ êîððåêòèðîâêà íå ó÷èòûâàåò çàêîí èçìåíåíèÿ ÿðêîñòè â çàâèñèìîñòè îò âûõîäíîãî íàïðÿæåíèÿ.\r\n\r\nÐàçëè÷èå â ñòåïåíè ðåàêöèè ïðàâûõ è ëåâûõ ñâåòîäèîäîâ ïðèâîäèò ê ñìåùåíèþ ôàç ñâåòîâûõ èìïóëüñîâ (õîðîøî çàìåòíî ïðè ìàëîé ÿðêîñòè), à, ñëåäîâàòåëüíî – ê èçìåíåíèþ õàðàêòåðà âîçäåéñòâèÿ ñòèìóëÿöèè íà àêòèâíîñòü ìîçãà. Âîçìîæíî òàêæå, ÷òî ïðîèñõîäèò îäíîñòîðîííÿÿ ðàññèíõðîíèçàöèÿ âèçàóëüíîãî è çâóêîâîãî âîçäåéñòâèé.\r\n\r\nÑãëàäèòü íåðàâíîìåðíîñòü óäàåòñÿ òîëüêî ñóùåñòâåííûì óâåëè÷åíèåì îáùåé ÿðêîñòè. Ïîíÿòíî, â ñëó÷àå î÷êîâ Premium, - ýòî íå âñåãäà ïðèÿòíàÿ ìåðà...\r\n\r\nÍàáëþäàåòñÿ ëè ïîäîáíûé ýôôåêò ïðè èñïîëüçîâàíèè äðóãîãî òèïà î÷êîâ? Óäàëîñü ëè êîìó-íèáóäü ðåøèòü óêàçàííóþ ïðîáëåìó?', '', 0, 'wA==', 'vyohapwd', 1, 0, '', 1680, 0, 0);
Последний раз редактировалось FEAR93 17.08.2011 11:16, всего редактировалось 1 раз.
Причина: Заключил код в BBCode
Причина: Заключил код в BBCode
-
Sheer
- Former team member
- Сообщения: 12113
- Стаж: 19 лет 7 месяцев
- Откуда: Калининград не Кенигсберг
- Благодарил (а): 54 раза
- Поблагодарили: 2756 раз
Re: Битая кодировка всех сообщений у пользователя
Фиг знает...
Сделайте так
Проверьте кодировку у получившегося файла
Сделайте так
Код: Выделить всё
<?php
header('Content-Type: text/html; charset=utf-8');
define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
print "Starting...<br />";
$fp2 = fopen('out.sql','wb');
$sql = 'SELECT * FROM ' .POSTS_TABLE. ' WHERE poster_id = 1680';
$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result))
{
$new = iconv("UTF-8", "CP1252", $row['post_text']);
$new_sumbj = iconv("UTF-8", "CP1252", $row['post_subject']);
$sqlc = 'UPDATE ' .POSTS_TABLE. ' SET post_text = \''.$new.'\', post_subject = \''.$new_sumbj.'\' WHERE post_id = '.$row['post_id'].';';
fwrite( $fp2, $sqlc);
fwrite( $fp2, chr(13));
}
fclose($fp2);
print "Done!";
?>out.sql. Откройте его в Notepad++, если кодировка будет ANSI сохраните в UTF-8 без BOM, затем импортируйте в phpMyAdmin.Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
-
vlaimir
- phpBB 1.0.0
- Сообщения: 6
- Стаж: 15 лет 1 месяц
Re: Битая кодировка всех сообщений у пользователя
Сделал, при запуске выдает:
Ответ MySQL: Документация
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'а.
Т.к. иÑ
Часть сообщений перекодировалась.
Теперь, чтобы делать новые перекодировки нужно удалять посты из запроса, которые уже перекодированы.
Добавлено спустя 44 минуты 15 секунд:
Нашел способ перекодировать через PhpMyAdmin.
Делаем выборку id и постов пользователя с битой кодировкой.
Затем выделяем их все и делаем их экспорт с функцией Update.
Полученный дамп загоняем в http://www.artlebedev.ru/tools/decoder/
и потом в PhpMyAdmin запускаем.
Ответ MySQL: Документация
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'а.
Т.к. иÑ
Часть сообщений перекодировалась.
Теперь, чтобы делать новые перекодировки нужно удалять посты из запроса, которые уже перекодированы.
Добавлено спустя 44 минуты 15 секунд:
Нашел способ перекодировать через PhpMyAdmin.
Делаем выборку id и постов пользователя с битой кодировкой.
Затем выделяем их все и делаем их экспорт с функцией Update.
Полученный дамп загоняем в http://www.artlebedev.ru/tools/decoder/
и потом в PhpMyAdmin запускаем.

