Перевод Форумов Авиабазы на UTF-8

 
1 2 3 4 5 6 7 8
+
-
edit
 

Balancer

администратор
★★★★☆
someuser, 18.02.2004 19:00:07 :
2 Balancer
Скриптом можно надёргать из базы всё что угодно... Хоть во флат, а из него тем же скриптом - в базу на локалке. :)
 


Да при чём тут локалка? :D

Проблема возникла отнюдь не простом переходе на новую версию MySQL. А в mysqldump'е. При конвертации базы старой в новую. По частям бы сымитировать то же самое не вышло бы - инфа, выдернутая и вставленная скриптом проходит иные пути, чем mysqldump и рассматрвиается иначе в плане кодировок. А mysqldump - он только целиком всё позволяет сбросить/втянуть.
 
RU Dem_anywhere #18.02.2004 19:59
+
-
edit
 

Dem_anywhere

аксакал

проблема с отображением в "Человек и общество" - стоит content="text/html; utf-8" вместо content="text/html; charset=utf-8"


в mysqldump можно задать условие на вывод - например
"--where=post_id>20 AND post_id<30"
потом удалить эти записи в таблице и импортнуть данные заново
Не знаю структуры базы форума - но там текст сообщения в одной таблице вроде хранится...
 
+
-
edit
 

Balancer

администратор
★★★★☆
Dem_anywhere, 18.02.2004 19:59:23 :
проблема с отображением в "Человек и общество" - стоит content="text/html; utf-8" вместо content="text/html; charset=utf-8"
 


Хм. Посмотрю. Хотя я этим не занимаюсь, а код форума в этом месте я не трогал с его рождения :D


>в mysqldump можно задать условие на вывод - например
>"--where=post_id>20 AND post_id<30"

Посмотрю, хотя в man'е у меня такого нет по нему.

>потом удалить эти записи в таблице и импортнуть данные заново

Простой импорт не поможет. В MySQL нет пока функций замены кодировки столбцов и таблиц. Только для базы можно поменять. Для столбцов и таблиц можно задать, но нельзя изменить. Так что - только через дамп.

>Не знаю структуры базы форума - но там текст сообщения в одной таблице вроде хранится...

Тексты сообщений - естественно в одной.
 
RU Dem_anywhere #18.02.2004 20:33
+
-
edit
 

Dem_anywhere

аксакал

из того, что он по --help выдаёт (4.0.15)
-w, --where=name Dump only selected records; QUOTES mandatory!

А экспортнуть нужный кусок в файл и натравить на него перекодировщик в utf8?
а потом закачать назад
 
+
-
edit
 

Balancer

администратор
★★★★☆
Dem_anywhere, 18.02.2004 20:33:19 :
из того, что он по --help выдаёт (4.0.15)
-w, --where=name Dump only selected records; QUOTES mandatory!
 


Да, точно.


>А экспортнуть нужный кусок в файл и натравить на него перекодировщик в utf8?
>а потом закачать назад

Я так и пытался позавчера делать. Если интересна поднаготная проблемы, то дело обстоит так:

1. Сделал mysqldump старой базы.
2. Перегнал дамп в UTF8.
3. Втянул его назад, убедившись, что всё ок (исключая, понятно, сортировку, поиск и т.п.).
4. Обновил MySQL (напомню, что 4.0.x не поддерживает UTF8).
5. После обновления натравил, в строгом соответствии с инструкцией myisamchk с параметром применения кодировки UTF8 и т.п.

Вроде, всё было ок. MySQL компилил с ключом кодовой таблицы UTF8.
Уже после того выяснилось, что MySQL всё равно пашет в cp1251.
Прописал принудительно в конфиге.
После этого он стал отдавать инфу в cp1251. Это те минут 40 "квадратиков", что 16-го с ~18:00 до 18:40 были. Когда заметил, когда разобрался - вернул назад.
Выяснилось вот что. База, сидящая в нём физически записана в UTF8. Но считает он, что она в cp1251. Если у него и просят 1251, то он отдаёт как есть. Всё работает (сейчас). Если ему сказать, что он в UTF8, он начинает свою базу преобразовывать как бы из 1251 в UTF8! Т.е. получается двойное преобразование.

Прошлой (т.е. с 16-го на 17-е) ночью пытался провести такой финт. Сбросить базу, поменять вручную все упоминания кодировки cp1251 на utf8 и втянуть обратно. Долго не мог понять чем сконвертить. В конце концов сделал это Perl-скриптом.

Всё хорошо, но при втягивании такого файла у него сперва начинается ругань на то, что "максимальная длина ключа 500 байт" (как выяснилость, возникает при объявлении VARCHAR(167) и больше. А в базе полно VARCHAR(255)). Ещё много возни. Исправление всех таких VARCHAR с 255 на 167. Принимает, но падает при втягивании дампа. Каждый раз на одном месте для одного дампа. При чём часто - на небольших вставках, скажем, по 1кБ.

Даже отдельно мучал, отдельно структуру, отдельно - данные.

Последнее, до чего додумался - это написать тяжеловесный PHP-скрипт, который вырезает SQL-запросы из дампа и по одному их скармливает базе. Но в ту ночь уже прогнать до конца его не успел (очень медленно, долго файл разбирать приходится). Так что вернул дамп, сброшенный до этих извращений и пошёл спать.

В прошлую ночь - отсыпался.

В эту - попробую снова помучать :)

Кстати, уже позже, сегодня, кажется, допёр почему осыпались голосования. Они хранятся в базе в виде serialize (кто ж так додумался!) и поэтому при конвертациях там всё поехало. После того, как базу с нормальными кодировками настрою, придётся их вручную из старой базы восстанавливать.
 
+
-
edit
 

Balancer

администратор
★★★★☆
Dem_anywhere, 18.02.2004 19:59:23 :
проблема с отображением в "Человек и общество" - стоит content="text/html; utf-8" вместо content="text/html; charset=utf-8"
 


Исправил. Глюк в скине был. Впрочем, по стандарту итак должно быть ок.
Кроме того, кодировку ещё ответ сервера возвращает, а у него, вроде, приоритет выше.
 
+
-
edit
 

someuser

опытный

Брррр... Не стоят эти мучения того, чтобы так париться...
К тому же, не плохо бы движок сначала под это дело переписать.
По всей видимости, меня скоро окончательно забанят.
Так что использую последнюю возможность...
Прощайте, все участники форума Авиабаза! Было очень интересно общаться с вами без малого год. Ну что же, увы, возникли непреодолимые обстоятельства. Надеюсь, ещё пересечёмся где-нибудь в и-нете, он ведь большой! Не поминайте лихом...
 
+
-
edit
 

someuser

опытный

>Да при чём тут локалка?
Ну в смысле локалхост.
Чтобы значится там поиграться с конвертированием, всё отработать и т.п. :)
По всей видимости, меня скоро окончательно забанят.
Так что использую последнюю возможность...
Прощайте, все участники форума Авиабаза! Было очень интересно общаться с вами без малого год. Ну что же, увы, возникли непреодолимые обстоятельства. Надеюсь, ещё пересечёмся где-нибудь в и-нете, он ведь большой! Не поминайте лихом...
 
+
-
edit
 

Balancer

администратор
★★★★☆
someuser, 18.02.2004 21:04:51 :
Брррр... Не стоят эти мучения того, чтобы так париться...
 


СтОят :)
Во-первых, того гляди все там будем.
Во-вторых, слишком часто стал народ нарываться на постинг запрещённых для cp1251 символов.
В-третьих, так просто правильнее :D

>К тому же, не плохо бы движок сначала под это дело переписать.

А чего его переписывать, PHP с multibyte strings хорошо работает. Пока только одна проблемка есть, и та не в форуме, а в моих автоссылках. Да оно и понятно, автоссылки в cp1251, а текст форума - в UTF-8 :) Попозже исправлю.
 
+
-
edit
 

Balancer

администратор
★★★★☆
someuser, 18.02.2004 21:07:20 :
Ну в смысле локалхост.
 


Да понял я :)

>Чтобы значится там поиграться с конвертированием, всё отработать и т.п. :)

Проблемы то не в этом вылезли. Я же уже писал выше :)
 
+
-
edit
 

someuser

опытный

2 Balancer
Так это первый этап.
Второй этап - поставить параллельно форум с кусочком базы на сервер и с ним играться - никому не мешая (ну по возможности), и при этом не мучаясь с тормозами при работе с полугиговой базой. :)
ЗЫ Так лучше бы это время потратить на всякие там цитаты, формы ответа и т.п. :)
По всей видимости, меня скоро окончательно забанят.
Так что использую последнюю возможность...
Прощайте, все участники форума Авиабаза! Было очень интересно общаться с вами без малого год. Ну что же, увы, возникли непреодолимые обстоятельства. Надеюсь, ещё пересечёмся где-нибудь в и-нете, он ведь большой! Не поминайте лихом...
 
+
-
edit
 

Balancer

администратор
★★★★☆
someuser, 18.02.2004 21:56:37 :
ЗЫ Так лучше бы это время потратить на всякие там цитаты, формы ответа и т.п. :)
 


Я бы давно это всё уже сделал, но не хочется делать это зазря. Потому что на версию 2.0 переходить придётся всё равно. А значит - прощай все патчи, здравствуй возня с ними по-новому. Не люблю :)
 
+
-
edit
 

someuser

опытный

Ну лучше то же, но с UTF... :)
По всей видимости, меня скоро окончательно забанят.
Так что использую последнюю возможность...
Прощайте, все участники форума Авиабаза! Было очень интересно общаться с вами без малого год. Ну что же, увы, возникли непреодолимые обстоятельства. Надеюсь, ещё пересечёмся где-нибудь в и-нете, он ведь большой! Не поминайте лихом...
 

Zeus

Динамик

Balancer, 19.02.2004 05:08:52 :
В-третьих, так просто правильнее :D
 


Гы-гы-гы :D
И животноводство!  
EE [Татарин] #19.02.2004 10:05
+
-
edit
 
Блин, и тут права русскоязычных ущемляют... :D
 
Не войти никак под именем в кириллице... :\
 
RU Dem_anywhere #19.02.2004 10:08
+
-
edit
 

Dem_anywhere

аксакал

Balancer, 18.02.2004 20:49:46 :
Всё хорошо, но при втягивании такого файла у него сперва начинается ругань на то, что "максимальная длина ключа 500 байт" (как выяснилость, возникает при объявлении VARCHAR(167) и больше.
 


Логично - 167*3 = 502

кстати - будешь с кусками работать - не забудь при экспорте про --no-create-db и --no-create-info

Кроме того, кодировку ещё ответ сервера возвращает, а у него, вроде, приоритет выше
 
Не знаю, как по стандарту, но мне кракозябры увиделись - иначе и не заметил бы :)
 
+
-
edit
 

Balancer

администратор
★★★★☆
Dem_anywhere, 19.02.2004 10:08:35 :
кстати - будешь с кусками работать - не забудь при экспорте про --no-create-db и --no-create-info
 


А без этого никак. Ворочать создание структуры в 600Мб файлах - то ещё удовольствие. Так что отдельно структура, отдельно данные :)

>Не знаю, как по стандарту, но мне кракозябры увиделись - иначе и не заметил бы :)

А у меня не было кракозябр :-P

Впрочем, ладно, поправил уже :)
 
+
-
edit
 

Balancer

администратор
★★★★☆
Про третью попытку перевода (сегодня ночью) см. Ловушка-68 [Balancer#19.02.04 10:04] :)
 
+
-
edit
 
>Блин, и тут права русскоязычных ущемляют...

Меня безусловно насторожил первый же постинг Ромы:

Сегодня ночью перевёл форумы на сабж. Больше не будет (надеюсь) глюков со вставками западных символов.
 


Согласитесь политика проводимая на базе весьма странная - нумерация пользователей, стук, а теперь еще забота о нерусских буквах.
Хотя разницы между UTF-8 и Win-1251 - нет. Все эти кодировки навязанны русскому народу нашими врагами, что очевидно уже из их названий.
 
+
-
edit
 

Balancer

администратор
★★★★☆
[TEvg:],19.02.2004 10:16:30
Хотя разницы между UTF-8 и Win-1251 - нет. Все эти кодировки навязанны русскому народу нашими врагами, что очевидно уже из их названий.
 


Ну так и чего ты тогда выпендриваешься?

А "ненавязанной" кодировки нет вообще. Никакой.
КОИ7 - привязка к ангийскому алфавиту, что у русской, что у английской, что у смешанной заглавной раскладки.
КОИ8 - аналогично, только что оба алфавита целиком вошли.
Основная - русские буквы выперты в старшую часть кодовой таблицы ради сохранения латинской нижней части.
Альтернативная (ака DOS866) - с привязкой к буржуйской псевдографике.

и т.д. :)

Короче, хорошь бредить, просыпайся давай.
 
+
-
edit
 
>Ну так и чего ты тогда выпендриваешься?
>А "ненавязанной" кодировки нет вообще. Никакой.

Я знаю. И потому не упрекаю за переход именно на UTF-8. Хрен редьки не слаще. Я только кране недоволен тем что стало нельзя писать в форумы на русском языке из старых браузеров.
 
+
-
edit
 
Видимо это произошло потому что "кодировка" - сугубо нерусское явление. Только извращенный мозг западного человека мог додуматься до такого.
 

Pazke

втянувшийся

[TEvg:],19.02.2004 10:47:38
Видимо это произошло потому что "кодировка" - сугубо нерусское явление. Только извращенный мозг западного человека мог додуматься до такого.
 


"Это как же вашу мать, извиняюсь понимать ?" © :D :D :D
 
+
-
edit
 

someuser

опытный

Мдя, пришёл Тевг и всё опошлил. :)
По всей видимости, меня скоро окончательно забанят.
Так что использую последнюю возможность...
Прощайте, все участники форума Авиабаза! Было очень интересно общаться с вами без малого год. Ну что же, увы, возникли непреодолимые обстоятельства. Надеюсь, ещё пересечёмся где-нибудь в и-нете, он ведь большой! Не поминайте лихом...
 
1 2 3 4 5 6 7 8

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru