Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » MySql смена кодировки таблиц. Глюки с шаманизмом

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3

Открыть новую тему     Написать ответ в эту тему

Aresstokrat



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
рассказываю весь ужасс ситуации с самого начала, войдите в положение , объявните что же я не так делаю.
ситуация следующая, стоит на хосте форум Phorum v.3.4.1 (www.phorum.org) хотел поставить phpbb сохраняя при этом посты, т.е. конвертнуть их из phorum'a в phpbb. Так вот, обнаружил вот этот топик (___http://www.phpbb.com/phpBB/viewtopic.php?p=1482440#1482440 не сочтите за рекламу, просто чтоб понятно откуда инфо) и взял оттуда вот этот скрипт (___http://www.brianfrance.com/software/phpbb/phorum2phpbb.php.txt ) настроил его, поставил phpBB2.0.1 как просит скрипт, запустил  
 

Код:
Starting the import...
New category 'Imported from Phorums', ID: 3
  Added new forum ' тНПСЛ 'мЕХГБЕЯРМЮЪ ОКЮМЕРЮ'', ID: 3
    Added new topic '"мЕХГБЕЯРМЮЪ ОКЮМЕРЮ" МЮ рмр www.xxx.ru', ID: 202
 
 Added replies '"мЕХГБЕЯРМЮЪ ОКЮМЕРЮ" МЮ рмр www.xxx.ru', ID: 1652
 
 

но это не самое страшное, дело в том что импортировалось. Но при заходе в phpBB я не могу читать буквы которые он импортировал, они в кривой кодировке. Я посмотрел в mysql базу и оказалось что все таблицы Phorum'a в KOI8-R а все таблицы phpBB в CP1251. А сама русификация к phpBB тоже в cp1251.
я попробовал сделать дамп базы с установленный phorum'om и конвертировать его через ssh console в 1251, но результат оказался тот же.  
Я сконтактировался с создателем скрипта и мы вместе на протяжении 4,5 часов пытались настроить конвертацию, ничего не получается (только что сказал ему большое спасибо за потраченое на меня время), пытались встроить в скрипт iconv что бы он на ходу при конвертации перекодировал koi8-r в cp1251. Ничего не получилось, всё та же проблема, буквы покоцаны.  При чём забавность - пытаюсь принудительно браузеры сказать что бы он показывал cp1251 всё равно тоже самое, принудительно koi8-r (сама русификаци к форума разъезжается тогда) но и то не приносит результатов. При это если вставить через буффер обмена в какой нибудь Штирлиц, то он явно говорит что это koi8 и декодирует его в win для правильного отображения.
 
При этом я посмотрел в базу mysql, действительно все таблицы phorum'a в koi8r_general_ci  кодировке, но обзором посмотреть что в них я не могу, всё те же кривые знаки, хотя и пробовал выставлять само mysql отображение в phpmyadmin в koi8r, cp1251 что там за знакми всё равно просмотреть не могу, а должно же ведь быть видно.
 
при этом при всём в самом phorum'e всё абсолютно нормально отображается, когда в браузере выставлено 1251, но php прежде чем постить из базы переменные charset же их не меняет, вообщем для меня какой то шаманизм и чёрная магия, ничего уже не понимаю.
 
уже 12 часов бьюсь над этой проблемой, пошёл спать, очень надеюсь на вашу помощь и поддержку. Заранее спасибо.
 
--
 
не смог лечь спать, посмотрел ещё, оказывается я промахнулся, я запускал phorum локально, но все данные он видимо брал с remote сервера, возможно поэтому и отображается правильно...хотя как это может быть если там в конфигах (не я его устанавливал правда) прописано localhost... мысли путаются...
но не поленился залез на ремот сервер, через пхпмайадмин всё равно не могу просмотреть что в тех таблицах, не понятно что с charset

Всего записей: 597 | Зарегистр. 06-01-2004 | Отправлено: 04:41 18-03-2005 | Исправлено: Aresstokrat, 21:06 04-04-2005
DStream

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Чуть-чуть покури над  set CHARACTER SET cp1251_koi8  и никакой магии

Всего записей: 605 | Зарегистр. 03-05-2003 | Отправлено: 08:49 19-03-2005
Nvc

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Сделай дамп базы, смени все koi8 на cp1251, а дальше запусти етот скрипт:

Код:
#!/usr/bin/perl
use Encode qw/from_to/;
 
$file = shift;
 
if (($file eq '') || ($file eq '--help'))
{
  print "koi8 to cp1251 convertor\nUsage: ./win2koi.pl filename\n";
  exit;
}
 
open F, $file || die "$file: no such file\n";
@f = <F>;
close F;
 
from_to($_, "koi8-r", "cp1251") foreach (@f);
 
open F, '>'.$file;
print F @f;
close F;
 
print "Ok!\n";

В результате у тебя будет дамп в кодировке cp1251. Дальше просто импортируеш дамп в базу и пользуешся конвертором.

Всего записей: 235 | Зарегистр. 01-08-2004 | Отправлено: 11:49 19-03-2005
SiMM

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Самое простое решение - выводить текст phpbb в KOI8.
В противном случае, если в базе кроме текстовых данных лежит ещё что-либо, бинарное - результат преобразования "побъёт" эти данные.

Всего записей: 2302 | Зарегистр. 14-05-2004 | Отправлено: 13:37 19-03-2005
DStream

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Зачем маяться?
У mySQL сервера настроена одна из кодировок. Кстати она в том числе отвечает и за преобразование букв в верхний/нижний регистры, управляет сортировкой и т.п.
 
Если default charset = koi8r то и надо хранить в koi8r
 
А директива, про которую я писал и предназначена как раз для выдачи результатов обращений к mySQL в windows-1251 кодировке, при том, что хранение/сортировка/преобразования осуществляются в koi8r
 
По-моему единственный честный способ работы.
 
А делов-то просто вставить в одном месте $db->sql_query("set CHARACTER SET cp1251_koi8")  
 

Всего записей: 605 | Зарегистр. 03-05-2003 | Отправлено: 14:41 19-03-2005
Aresstokrat



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
----
Спасибо всем ответившим, рассказываю как решилась ситуёвина.
Содержание phorum'a было в кодировке cp1251 однако подписана в mysql была как koi8r.
был сделан дамп при чём форсировано было ручками что cp1251, далее импорт и так же форсировано что cp1251 по
--default-character-set=cp1251
 
далее магическими пассами на лету $a_string = iconv( 'cp1251', 'koi8-r', $a_string )
-------
 
!!!!!!!! - всё решилось кроме того что при преобразовании всё ещё не в той кодировке находятся НАЗВАНИЯ сообщений, помогите решить сей казус
 
вот скрипт
 
__http://www.rusnuke.com/modules.php?name=Forums&file=download&id=11
 
надо переименовать файл в .php
 

Всего записей: 597 | Зарегистр. 06-01-2004 | Отправлено: 15:18 28-03-2005
Spadver



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А версия мускула небось 4.1.* ?

Всего записей: 416 | Зарегистр. 12-02-2003 | Отправлено: 18:28 28-03-2005
Aresstokrat



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ВСЁ ЕЩЁ НУЖНА ПОМОЩЬ !

Всего записей: 597 | Зарегистр. 06-01-2004 | Отправлено: 19:48 28-03-2005 | Исправлено: Aresstokrat, 20:58 04-04-2005
HeT BonpocoB



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
народ, помогите сделать дамп базы!
 
имеется MySQL 4.1.12 (Win32) , на нем база форума Инвижен и еще одна база.
все базы созданы (наверно с дуру) default-character-set=utf8.
 
в общем все работает, Инвижен из своей админки делает нормальный бэкап, а вот с помощью mysqldump сделать бэкап не получается! создается он с нечитабельными данными
 
ключи к mysqldump перепробовал все, как его можно заставить сделать нормальный дамп? или как вообще исправить положение???

Всего записей: 1342 | Зарегистр. 30-03-2003 | Отправлено: 19:41 03-11-2005
SiMM

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
а вот с помощью mysqldump сделать бэкап не получается! создается он с нечитабельными данными
С нормальными он данными создаётся. Как и указано - в кодировке UTF-8

Всего записей: 2302 | Зарегистр. 14-05-2004 | Отправлено: 12:41 04-11-2005
HeT BonpocoB



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
SiMM, может конечно я чего не понимаю, но грубо взять и прочитать не получается ничем! использовал EmEditor и даж в IE пытался кодировку перебирать - все не то. А чувствую если такой дамп потом ещё обратно загнать в базу то будет страшно представить что....    
или может тогда подскажешь чем его точно можно прочитать?
 
p.s. а вот дамп от инвиженовской админки (повторюсь) все сохраняет как положено...

Всего записей: 1342 | Зарегистр. 30-03-2003 | Отправлено: 18:47 04-11-2005
SiMM

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
А чувствую если такой дамп потом ещё обратно загнать в базу то будет страшно представить что....
Чувствовать от тебя не требуется.
http://dev.mysql.com/doc/mysql/ru/mysql.html

Цитата:
или может тогда подскажешь чем его точно можно прочитать?
Зачем?
Софтом, который умеет читать UTF-8.

Всего записей: 2302 | Зарегистр. 14-05-2004 | Отправлено: 20:18 04-11-2005 | Исправлено: SiMM, 20:19 04-11-2005
dacuan

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Переносил данные с одного MySQL-сервера на другой. Изначально использовалась кодировка KOI8 и преобразование при выводе "SET CHARACTER SET cp1251_koi8", требовалось поставить в CP-1251.  
 
Данные нормально перекодировались, все отоброжается, но возникла странная проблема: спецсимволы, которые сохраняются при вставке из ворда (длинное тире, угловые кавычки) при сохранении в БД стали заменяться знаками вопроса. Баловался кодировками, отключал преобразования, но знаки вопросов все-равно появляются.
 
Может кто сталкивался с подобной проблемой?

Всего записей: 545 | Зарегистр. 23-10-2003 | Отправлено: 12:56 05-11-2005
SiMM

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
спецсимволы, которые сохраняются при вставке из ворда (длинное тире, угловые кавычки) при сохранении в БД стали заменяться знаками вопроса.
В KOI8 нет таких символов, в отличии от CP1251

Всего записей: 2302 | Зарегистр. 14-05-2004 | Отправлено: 13:45 05-11-2005
dacuan

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SiMM

Цитата:
В KOI8 нет таких символов, в отличии от CP1251

Это-то я знаю , поэтому и была переведена база на CP1251.
 
Но после переноса на другой сервер, переводе на CP1251 и отключении перекодировки спецсимволы начали теряться. Возвращение KOI8 ситуации не исправило.
 
На новом сервере стоит MySQL версии 4.1.11, думаю, проблема именно в этом, т.к.  на более ранних версиях, включая 3.x.x все работало великолепно.

Всего записей: 545 | Зарегистр. 23-10-2003 | Отправлено: 17:16 05-11-2005
SiMM

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Но после переноса на другой сервер, переводе на CP1251 и отключении перекодировки спецсимволы начали теряться. Возвращение KOI8 ситуации не исправило.
Естесственно. Если в кодировке символов нет - то и штатные средства перекодировки тебе их не выдумают.
http://phpclub.ru/faq/Mysql41Rus

Всего записей: 2302 | Зарегистр. 14-05-2004 | Отправлено: 18:23 05-11-2005
dacuan

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SiMM
За ссылку спасибо, только не по моей проблеме.

Цитата:
Естесственно. Если в кодировке символов нет - то и штатные средства перекодировки тебе их не выдумают.

Я прекрасно понимаю, что оно и _должно_ заменять на знаки вопроса при перекодировке. Делемма в том, что  
 
1) в более ранних версиях автоматическая перекодировка спокойно работала с "лишними" символами
2) при отсутствии перекодировки, знаки вопроса все равно вставляются
 
Поэтому, предлагаю опустить тему перекодирвки.  
Переформулирую вопрос.
 
Кто-нибудь сталкивался с ситуацией, когда MySQL v4.1.x при charset'ах для всех таблиц cp1251_general_ci и работе с таблицами как с явным указанием SET NAMES cp1251 так и без него, спецсимволы Word заменял на знаки вопроса?
 
PS MySQL установлен на FreeBSD 5.4

Всего записей: 545 | Зарегистр. 23-10-2003 | Отправлено: 19:09 05-11-2005
HeT BonpocoB



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
.... и се таки я из справки MySQl чтот совсем ничего не понял про "перевод" баз из одной кодировки в другую...
может кто видел какое простое пошагово описание процесса: как сделать такой дамп базы utf-8, чтоб загнать её потом на latin1 например, или даж cp1251.
как не пробовал - или ???????? ?????????? ??????? получается, или ГГГГГГГГГГГГГГГГГГГГГ и т.д. в том же духе .

Всего записей: 1342 | Зарегистр. 30-03-2003 | Отправлено: 18:40 10-11-2005
opraHu3M



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите... неделю бьюсь. Хостер чото помоч не может.. грит со мной только такая беда.  
 
Перехожу с 4.0 на 4.1 .... соответственно с кодировки 1251 на УТФ.
 
порядок действий:
 
1) у себя дамп делаю.
2) настройки на хостинге:
- язык (рус-утф8)
- сравнение (1251_генерал_ци)
3) заливаю, указывая кодировку файла-источника 1251. (если указать УТФ8 - руские буквы потруться вообще)
 
в итоге... РНРМайАдмин видит русский... но на сайте "?????????????????"
 
что делать... ? добивает уже... пробовал кучу вариантов...  
 
заранее благодарен.  
 
 

Всего записей: 47 | Зарегистр. 27-06-2005 | Отправлено: 23:05 16-11-2005
SiMM

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
http://phpclub.ru/faq/Mysql41Rus

Всего записей: 2302 | Зарегистр. 14-05-2004 | Отправлено: 23:23 16-11-2005
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3

Компьютерный форум Ru.Board » Интернет » Web-программирование » MySql смена кодировки таблиц. Глюки с шаманизмом


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru