Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
Авария с кодировками на mysql (Aleksanders) 15/03/2007 - 05:11:39



From: Aleksanders - 15/03/2007 - 05:11:39
Subject:Авария с кодировками на mysql
-----------------
Произошла довольно серьезная неприятность с русскими кодировками на форуме русской поддержки Ubuntu Linux. Форум был по адресу http://forum.ubuntu.ru/ потом у хостера грохнулся винт, на котором был проект. К счастью, имелся бэкап, который был поднят на другом сервере. Некоторые русские буквы превратились в кашу: П, с, э, ю, я. Как это выглядит, можно увидеть на http://forum.ubuntu-ru.org/ и там есть тема о сложившейся проблеме http://forum.ubuntu-ru.org/index.php?topic=7447.0;topicseen
Если кто хочет и знает как можно в этом помочь, откликнитесь! Мое мыло указано в этой теме, ICQ UIN админа форума 103195540.

Вот что уже удалось обсудить:

(08:11:01 PM) Aleksanders: Привет!
(08:11:33 PM) skyrider: привет
(08:12:17 PM) Aleksanders: Как там дела с форумом?
(08:14:20 PM) skyrider: Там всё уже нормально, за исключением одной беды - в базе почему-то попортило некоторые русские буквы (с, э, я и ещё какую-то). Сейчас пытаемся разобраться как это можно обойти. По этой причине пока домен forum.ubuntu.ru пока не перенастраиваем на новый сервер.
(08:15:23 PM) Aleksanders: То есть они испорчены, или отдельные буквы не в той кодировке, что надо?
(08:16:32 PM) Aleksanders: Может быть, просто отображаются неверно? Я где-то видел такое давно.
(08:16:33 PM) skyrider: как бы не в той кодировке. Т.е. весь текст лежит юникодом, а эти нет. Точно сейчас сказать не могу, т.к. у меня нет доступа на сервер с работы.
(08:16:46 PM) Aleksanders: Понятно
(08:17:20 PM) Aleksanders: Вероятно, это какая-то таблица преобразования кодировок не пропатчена?
(08:17:20 PM) skyrider: да, это было уже и раньше на старом хосте (при переезде на новый mysql), но там Маттиас что-то подпатчил и оно отображалось нормально
(08:17:35 PM) skyrider: Теперь вот жду когда он появится и тут пофиксит
(08:17:36 PM) skyrider: да, похоже
(08:18:18 PM) Aleksanders: Думаю, это в mysql косяк. А можно сделать не в юникоде, а в другой кодировке вывод?
(08:18:58 PM) skyrider: в принципе можно будет попробовать.
(08:19:19 PM) Aleksanders: Хорошо, посмотрим.
(08:19:28 PM) skyrider: В общем я пока жду ответа от админа сервера, посмотрим что он скажет, а потом будем решать.
(08:20:39 PM) Aleksanders: Я как-то давно делал связку Апач+ПХП+Мускул, но без юникода, там проблем не было.
(08:21:18 PM) Aleksanders: Хотя внутри базы оно, возможно, и в юникоде. Глубоко работу Мускула не знаю.
(08:21:42 PM) skyrider: у меня и с юникодом таких проблем не было. А тут вот такая лажа вышла. В том и дело что прямо в базе оно лежит "странно".
(08:22:16 PM) Aleksanders: И если делать селекты напрямую в консоли - то же самое выдается?
(08:22:40 PM) Aleksanders: А шестнадцатиричные байты у этих "странных" букв разнве?
(08:22:43 PM) skyrider: да
(08:23:07 PM) skyrider: да, _вроде_ разные. Просто сейчас не могу посмотреть.
(08:23:27 PM) skyrider: Если разные, то можно будет sed'ом пройтись и поменять. :)
(08:23:46 PM) Aleksanders: Может быть, изначально неправильно писалось в базу, потому что изначально таблица перекодировки кривая была? Если так, то надо будет конвертить базу с кривой кодировкой.
(08:24:05 PM) Aleksanders: Либо кривить таблицу и базу оставить как есть
(08:24:22 PM) skyrider: скорее всего надо будет конвертить базу
(08:25:41 PM) Aleksanders: Кривить таблицу перекодировки, конвертить в другую кодовую страницу, возвращать нормальную таблицу перекодировки и конвертить назад в юникод? Как-то мало радостно :(
(08:26:21 PM) Aleksanders: Но тогда могут умереть другие локали, если где-то есть.
(08:28:09 PM) skyrider: я думаю проще будет сделать дамп базы и по нему пройтись regexp'ами чтобы поправить битые символы.
(08:28:27 PM) skyrider: а потом восстановить базу из дампа
(08:28:55 PM) skyrider: хотя может Маттиас знает/предложит более простой вариант. По крайней мере я на это надеюсь :)
(08:30:51 PM) Aleksanders: А в дампе внутри юникод? Просто там в дампе не только текстовая инфа, но и куча служебных данных. ПРи подъеме от данных останется каша
(08:31:52 PM) skyrider: юникод
(08:32:10 PM) Aleksanders: Надо какой-нить скриптец написать на чем-нить типа перла, наверно :) ВОт только знает ли он что-либо о юникоде? :)
(08:32:45 PM) skyrider: А почему же не знает? В любом случае я предпочитаю питон, а там с юникодом всё ок :)
(08:33:42 PM) Aleksanders: Ну да, Пайтон лучше знает современные штучки
(08:46:13 PM) Aleksanders: D0 3F->Н
D1 3F->с
D1 3F->э
D1 3F->я
По крайней мере, так видно у меня в браузере. Если так же в базе - кранты %(
(08:48:15 PM) Aleksanders: Прикольно, UTF-8 частично дублирует кодовую страницу KOI-7 :), по крайней мере, латиницу и знаки препинания - все однобайтное 1 в 1 :)
(08:49:35 PM) skyrider: Ну так правильно. В этом и вся соль UTF-8 - вся таблица ASCII (7-ми битная) в ней такая же как и во всех других однобайтных кодировках.
(08:50:37 PM) Aleksanders: Надо смотреть что внутри базы. Может быть, попробовать выгрузить базу в текстовые таблицы и их поломать.
(08:51:08 PM) Aleksanders: Если что, я могу написать о ходе работ народу?
(08:51:09 PM) skyrider: вот это и собираюсь делать. Но пока я на работе, то не могу этим заняться.
(08:53:32 PM) skyrider: а есть ли смысл пока писать что-то? Напиши что есть проблема с кодировкой в базе, сегодня ночью что-то должно решиться. Пусть подождут до завтра
(09:56:55 PM) Aleksanders: Пошарил по сети, ничего похожего кроме http://rus-phpnuke.com/modules.php?name=Forums&file=viewtopic&p=134906&highlight= на тему проблем с кодировками не нашел :(
(09:57:29 PM) skyrider: это не радует :(


[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
31015



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |