Форум vBTorrents.org

Форум vBTorrents.org (https://vbtorrents.org/index.php)
-   Вопросы, предложения (https://vbtorrents.org/forumdisplay.php?f=6)
-   -   Кодировка MySQL (https://vbtorrents.org/showthread.php?t=126)

FeNUMe 24.01.2010 19:02

Кодировка MySQL
 
Вложений: 1
Дошли наконец руки до обновления трекера с версии 1 на 2, после вечера танцев с бубном удалось обновится без потери инфы. Но в процессе ковыряния обнаружил что инфа в базе хранится в виде непонятных крякозябров(
Цитата:

4 Софи Кинселла - Тайный мир ш... 1235954031 [float=right][IMG]http://192.168.3.100/uploads/ima...
посмотрел инфу по кодировке базы и увидел вот такую картину
https://vbtorrents.org/attachment.ph...1&d=1264348557
Я так понимаю что проблема из-за того что в некоторых местах выставлена кодировка latin1. Попробовал кучей разного софта и скриптов дампить базу чтобы конвертануть и залить обратно но все дампы нормально не перекодируются(
Из-за этой проблемы в постах бывает изредка коверкаются 1-2 символа - потому и хочу решить. Может кто-то подскажет как безболезненно слить дамп в кодировку UTF-8 ?

Skald 24.01.2010 22:04

FeNUMe, sypex dumper-ом
но перед заливкой обратно советую проверить дамп на кодировки таблиц (не на данные внутри, они после сайпекса должны быть в одной кодировке, а на свойство самих таблиц -если не те, то просто отредактировать как надо)

FeNUMe 24.01.2010 22:52

пробовал уже разными версиями sypex dumper(и с форсированой перегонкой в ср1251/утф8) - результат один и тотже
Цитата:

(49, 674, 1901, 'vdv_17', 1261001243, 'visible', '', 'Привет я вижу Г‘Ж’ тебя ГђВјГђВЅГђВѕГђВіГђВѕ разного ГђВґГ‘Ж’ГђВјГ‘вЂ*ГђВ°!? Если ГђВЅГђВµ против мы могли бы обменяться.Ты как?', 3232236049, 1, 0, 1),
вот такое в дампе. если заливаю на старый сервер(откуда дамп) - все нормально отображается. на сервер с другими кодировками - сплошные глюки

Еще по самому трекеру вылезло пару проблем:
после обновления на вторую версию статистика не считается, хотя раздачи пашут и старая статистика отображается как надо.
если пытаться раздавать с того же компа где стоит трекер - раздача не идет.

Skald 25.01.2010 13:24

FeNUMe, при любой перегонке кодировки надо точно понимать из какой в какую кодировку перекодируешь. Главное в дампе получить везде русские читаемые данные (скорее всего будут в utf кодировке). А позже уже заниматься правкой свойств таблиц в дампе и заливкой дампа назад. Иногда приходится заливать дамп по частям, т.к. если уж слишком много кодировок, то сайпекс их на автомате не разгребет, т.е. в одном дампе один кусок в нормальной кодировке, в другом - другой.

Цитата:

Сообщение от FeNUMe (Сообщение 1853)
после обновления на вторую версию статистика не считается

советую проверить тип поля peer_id в таблице peers - скорее всего остался старый, соответственно стата не будет считаться.
Насчет раздачи - мне нужен точный конфиг сети, чтобы дать ответ.

FeNUMe 25.01.2010 16:49

у peer_id действительно был неверный тип - сменил, сегодня потестирую статистику.
На счет раздачи разобрался я просто с одним и тем же паскеем пытался на 1 компе раздавать а на втором качать)

И как ни странно практически удалось победетить проблему с кодировками: получил читабельный дамп через сам форум, после заливки его - данные в базе стали читатся как надо(везде кодировка утф8) но при этом форум отказался работать)))

тоесть пока в базе данные в чистом утф8 - не пашет
как только данные в виде утф8 закодированый латин1 - пашет

поискал в гугле по ошибке мускула и пока нашел 1 решение - править init.php как тут https://vbsupport.ru/forum/showthread.php?t=23843 тогда все работает как надо. пока протестил на vb3.7.4

в vb3.8.4 вместо этого костыля поставил в config.php
Цитата:

$config['Mysqli']['charset'] = 'utf8';
теперь абсолютно все у меня в utf8 - надеюсь в будущем теперь проблем не возникнет. да и нагрузка на базу уменьшиться должна за счет уменьшения количества автоперекодировок

Skald 25.01.2010 19:07

по идее это:
$config['Mysqli']['charset'] = 'utf8';
должно и для 3.7.4 работать, т.к. разницы в классах работы с БД нет между 3.7 и 3.8
(может в 3.7 не работало потому что в конфиге булки стояло использовать mysql, а не mysqli ?)

ffx 31.01.2010 18:26

Цитата:

Сообщение от Skald (Сообщение 1852)
(не на данные внутри, они после сайпекса должны быть в одной кодировке, а на свойство самих таблиц -если не те, то просто отредактировать как надо)

эээ нет Skald, перегоняются только таблицы... данные в них остаются в той кодировки в которой были, для перекодировки самих данных есть спец мод для вБ

Skald 01.02.2010 01:12

Цитата:

Сообщение от ffx (Сообщение 1895)
перегоняются только таблицы... данные в них остаются в той кодировки в которой были

я понял о каком моде идет речь, так могу сказать что пользы от него очень мало, т.к. типичную ситуацию когда в база создавалась в latin1 а надо сконвертировать в любую нормальную кодировку справиться он не сможет.

Сайпекс прекрасно экспортирует и импортирует для любых кодировок, и для перекодировок использует функционал мускуля. Только вот как я говорил надо полностью понимать принцип работы кодировок и принцип хранения данных в мускуле. Например при экспорте данных из latin1 если указать кодировку дампа по умолчанию (обычно utf) конечно получим на выходе совсем не те данные которые хотелось бы.
Но если указать кодировку дампа именно latin1, то внутри данные будут в cp1251 (хотя в свойствах таблиц будет указано latin1, т.е. придется править только свойство таблиц в дампе, а не сами данные), т.е. этот дамп уже можно нормально импортировать для получения нормальных данных в базе в правильной кодировке.

ffx 01.02.2010 11:12

я знаю, я говорю что dumper не конвертирует сами данные

Skald 01.02.2010 22:25

Цитата:

Сообщение от ffx (Сообщение 1898)
я знаю, я говорю что dumper не конвертирует сами данные

ладно. разговор ни о чем получается - сам дампер через PHP не конвертит, но он конвертит посредством MySQL, как следствие в общем можно упростить и сказать что это он конвертит.
Конвертация кодировок все-таки происходит в результате действий дампера :)))

FeNUMe 08.02.2010 22:15

в общем проблема решена. всем спасибо. Подитожу решение для тех у кого аналогичные проблемы:
если обобщить - то нужно просто экспорт из бд сделать в кодировке latin1 тогда вы получите читабельный дамп, который можно конвертить во что угодно и заливать в базу.

конкретно в моем случае я просто сделал дамп силами самого VB, он сделал все преобразования как и при выводе инфы, потому я получил читабельный дамп(файл нужно будет открыть в той кодировке в которой данные сохранялись в бд). После этого мне оставалось залить этот файл в базу с указанием кодировки в которой хранились данные(утф8)
в конфиге мускула поставил:
Цитата:

character-set-server = utf8
collation-server = utf8_general_ci
а в конфиге vb пришлось включить
Цитата:

$config['Mysqli']['charset'] = 'utf8';
иначе не работает. Что интересно я использую Mysql, а не Mysqli на сервере.

Теперь у меня везде кодировка установлена UTF8 для универсальности, хотя данные в ней занимают на 50% больше места чем в тойже cp1251

stepan83 14.10.2010 21:20

Установил vbulletin 3.8.5 на хостинг, загрузка базы прошла удачно с кодировкой ютф8 проблем не было. Далее попытался поставить даный форум на свой сервер с той же базой, но ни в какую не загружалась база, выходила ошибка. Начал загружать таблицы по отдельности загрузил все кроме таблицы language (так же выходила ошибка кодировка ютф8). Далее Попробовал поставить таблицу language с предыдущей версии vbulletin 3.8.4 все прошло удачно форум загрузился но кодировка вышла с крякозябрами. Посоветуйте что делать или поделитесь таблицей language с нормальной кодировкой ютф8

UnFeeLing 15.10.2010 19:37

Цитата:

Сообщение от stepan83 (Сообщение 2516)
Установил vbulletin 3.8.5 на хостинг, загрузка базы прошла удачно с кодировкой ютф8 проблем не было. Далее попытался поставить даный форум на свой сервер с той же базой, но ни в какую не загружалась база, выходила ошибка. Начал загружать таблицы по отдельности загрузил все кроме таблицы language (так же выходила ошибка кодировка ютф8). Далее Попробовал поставить таблицу language с предыдущей версии vbulletin 3.8.4 все прошло удачно форум загрузился но кодировка вышла с крякозябрами. Посоветуйте что делать или поделитесь таблицей language с нормальной кодировкой ютф8

http://sypex.net/

stepan83 15.10.2010 21:22

Цитата:

Сообщение от UnFeeLing (Сообщение 2518)
http://sypex.net/

Пробывал через данный скрипт выдает вот такую ошибку с таблицей language:
Код:

Warning: error_log(error.log) [function.error-log]: failed to open stream: Permission denied (C:\Inetpub\wwwroot\torrents\spx\index.php:695)
без неё грузит дамп нормально

UnFeeLing 15.10.2010 22:36

Цитата:

Сообщение от stepan83 (Сообщение 2519)
Пробывал через данный скрипт выдает вот такую ошибку с таблицей language:
Код:

Warning: error_log(error.log) [function.error-log]: failed to open stream: Permission denied (C:\Inetpub\wwwroot\torrents\spx\index.php:695)
без неё грузит дамп нормально

тип таблички?

stepan83 15.10.2010 23:13

Цитата:

Сообщение от UnFeeLing (Сообщение 2520)
тип таблички?

таблица language отображает русские буквы только в latin1

stepan83 17.10.2010 09:04

Проблема решена. Спасибо UnFeeLing
Последовательность действий:
1. Сохранить таблицу language в latin1 через скрипт sypex (как писал FeNUMe:
Цитата:

Сообщение от FeNUMe (Сообщение 1929)
если обобщить - то нужно просто экспорт из бд сделать в кодировке latin1 тогда вы получите читабельный дамп, который можно конвертить во что угодно и заливать в базу.

2. Залить все в phpmyadmin (грузил все таблицы по отдельности)
3. Перевести в phpmyadmin кодировку таблицы language из latin1 в utf8
Важно! все таблицы должны быть в одной кодировке utf8_general_ci.


Текущее время: 21:40. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.4 Patch Level 6
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot