forum.bitel.ru
http://forum.bitel.ru/

utf-8 бд
http://forum.bitel.ru/viewtopic.php?f=1&t=7683
Страница 1 из 2

Автор:  dimOn [ 05 фев 2013, 18:12 ]
Заголовок сообщения:  utf-8 бд

С 5.3 планируется всю работу с БД, а также почти все остальные взаимодействия перевести на UTF-8. Новые базы будут создаваться уже в UTF-8, старые без перекодировки работать тоже будут (ну планируется по крайней мере). Но свою тестовую мы хотим перекодировать для чистоты эксперимента. Так что новые разработки тестироваться будут уже как будто база в UTF-8.
Вопрос: будете ли вы перекодировать свою БД? Или оставите в 1251? И почему. И вообще какие мысли на этот счёт? Дискасс!

Автор:  Phricker [ 05 фев 2013, 18:36 ]
Заголовок сообщения:  Re: utf-8 бд

А можно услышать причины? Что изменится для конечного пользователя? Новые плюшки или что-то из-за чего стоит вообще это делать?
Так например переходя с 5.1 на 5.2 я знал что мне нужны шаблоны договора в новом FOP, модуль Inet в будущем ну и еще пара плюшек о которых я уже не упомню.

А тут что будет нового? :)

да, лень читать в интернете. я знаю что там будет поддерживаться больше кодировок и блаблабла, что символ в cp1251 весит 1 байт а в утф8 - 2 байта... Но, что это даст в данном конкретном случае?

Автор:  Akhmat [ 05 фев 2013, 19:55 ]
Заголовок сообщения:  Re: utf-8 бд

давно пора, что тут обсуждать.

Автор:  snark [ 05 фев 2013, 22:51 ]
Заголовок сообщения:  Re: utf-8 бд

dimOn писал(а):
С 5.3 планируется всю работу с БД, а также почти все остальные взаимодействия перевести на UTF-8.

Изображение


dimOn писал(а):
Новые базы будут создаваться уже в UTF-8

Надеюсь это будет utf8_general_ci, т.к. согласно ману:
Цитата:
For any Unicode character set, operations performed using the xxx_general_ci collation are faster than those for the xxx_unicode_ci collation. For example, comparisons for the utf8_general_ci collation are faster, but slightly less correct, than comparisons for utf8_unicode_ci. The reason for this is that utf8_unicode_ci supports mappings such as expansions; that is, when one character compares as equal to combinations of other characters.



dimOn писал(а):
старые без перекодировки работать тоже будут (ну планируется по крайней мере)

Доступ будет через SET NAMES? Смысл?


dimOn писал(а):
будете ли вы перекодировать свою БД?

Да, буду. Да, это:
Код:
cat <<TXT > bgb.sql
DROP DATABASE IF EXISTS bgbilling;
CREATE DATABASE bgbilling DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
USE bgbilling;
TXT

mysqldump --quick --single-transaction --default-character-set=cp1251 bgbilling >> bgb.sql

cat bgb.sql | iconv -f CP1251 -t UTF-8 > bgb.utf

mysql --default-character-set=utf8 < bgb.utf

займет немного времени, но UTF-изация того стоит, ящитаю.


Phricker писал(а):
А можно услышать причины? Что изменится для конечного пользователя?

Люди наконец то смогут использовать родные языки.


Phricker писал(а):
символ в cp1251 весит 1 байт а в утф8 - 2 байта

Это, пожалуй, единственный геморрой.



Единственный, пока не ясный для меня момент - это кодировка динкода. Если БД будет в UTF, то код, наверное, тоже надо будет конвертить, т.к. русская "строка" в 1251 и "строка" в UTF (цифрам пофиг, речь про строчки поиска, например) - это разные строки, не?

Автор:  Phricker [ 05 фев 2013, 23:05 ]
Заголовок сообщения:  Re: utf-8 бд

snark писал(а):
dimOn писал(а):
С 5.3 планируется всю работу с БД, а также почти все остальные взаимодействия перевести на UTF-8.

Изображение
Phricker писал(а):
А можно услышать причины? Что изменится для конечного пользователя?

Люди наконец то смогут использовать родные языки.

Узнал что аллилуя пишется через два Л )))

А для меня родной - русский. Так что я просто присоединюсь ко всеобщей радости )

Автор:  snark [ 06 фев 2013, 06:38 ]
Заголовок сообщения:  Re: utf-8 бд

Phricker писал(а):
Узнал что аллилуя пишется через два Л )))

Аллилуйа/аллилуиа слышал, а что такое "аллилуя"? )))

Автор:  Cromeshnic [ 06 фев 2013, 08:39 ]
Заголовок сообщения:  Re: utf-8 бд

dimOn писал(а):
Вопрос: будете ли вы перекодировать свою БД?

А насколько это критично? Плюсы, минусы? Какие могут быть проблемы, если не перекодировать?

Автор:  skyb [ 06 фев 2013, 10:15 ]
Заголовок сообщения:  Re: utf-8 бд

эээээ, я тоже не в теме, для меня это очередной гемор при переходе

Автор:  lda [ 06 фев 2013, 11:16 ]
Заголовок сообщения:  Re: utf-8 бд

Гемор конечно будет, но перекодировать базу на utf8 будем.
Главное продумать процесс перекодировки базы более детально.

Автор:  stark [ 06 фев 2013, 12:03 ]
Заголовок сообщения:  Re: utf-8 бд

Никто не говорит об обязательной конвертации . Хотели сделать поддержку utf8 для тех, кто хочет конвертировать, и для новых клиентов рекомендовать utf8.

Автор:  stark [ 06 фев 2013, 12:07 ]
Заголовок сообщения:  Re: utf-8 бд

snark писал(а):


Единственный, пока не ясный для меня момент - это кодировка динкода. Если БД будет в UTF, то код, наверное, тоже надо будет конвертить, т.к. русская "строка" в 1251 и "строка" в UTF (цифрам пофиг, речь про строчки поиска, например) - это разные строки, не?


Дин код итак уже в utf8 . Это не связано с кодировкой базы

Автор:  dimOn [ 06 фев 2013, 13:57 ]
Заголовок сообщения:  Re: utf-8 бд

Phricker писал(а):
А можно услышать причины? Что изменится для конечного пользователя? Новые плюшки или что-то из-за чего стоит вообще это делать?
Так например переходя с 5.1 на 5.2 я знал что мне нужны шаблоны договора в новом FOP, модуль Inet в будущем ну и еще пара плюшек о которых я уже не упомню.

А тут что будет нового? :)

да, лень читать в интернете. я знаю что там будет поддерживаться больше кодировок и блаблабла, что символ в cp1251 весит 1 байт а в утф8 - 2 байта... Но, что это даст в данном конкретном случае?

Изменится то, что однобайтовые кодировки — зло. Потенциальный гемор с кодировками и кракозябрами в дальнейшем уменьшается на порядки.
Новых фишек это не даст, просто стандарт это и везде если utf-8, то это хорошо.

Символ кириллицы занимает 2 байта, да. Но русских символов относительно общего объёма БД там 1% наберётся ли? В основном размер то всякие логи, и прочая шняга. Ну вырастет размер базы на 0.5% — это некритично, имхо.

Автор:  dimOn [ 06 фев 2013, 14:03 ]
Заголовок сообщения:  Re: utf-8 бд

snark писал(а):
dimOn писал(а):
старые без перекодировки работать тоже будут (ну планируется по крайней мере)

Доступ будет через SET NAMES? Смысл?

Не, обмен с сервером от кодировки базы мало зависит, драйвер и драйвер jdbc сам решает чего там как.
Т.е. у нас сейчас уже некоторые сидят на юникодной базе.

Автор:  dimOn [ 06 фев 2013, 14:04 ]
Заголовок сообщения:  Re: utf-8 бд

Cromeshnic писал(а):
dimOn писал(а):
Вопрос: будете ли вы перекодировать свою БД?

А насколько это критично? Плюсы, минусы? Какие могут быть проблемы, если не перекодировать?

Пока не знаем, но скоро узнаем :idea:

Автор:  dimOn [ 07 фев 2013, 18:00 ]
Заголовок сообщения:  Re: utf-8 бд

Вопрос возник ещё такой интересный. Что делать с выгружаемыми файлами csv, например. С одной стороны однобайтовые кодировки там парфозны, с другой будет много вопросов про «неправильные шрифты в экселе» ©.

Автор:  snark [ 07 фев 2013, 18:27 ]
Заголовок сообщения:  Re: utf-8 бд

Один раз укажут кодировку и вопрос отпадет, но будет задаваться другими :(

Изображение

Автор:  stark [ 08 фев 2013, 12:37 ]
Заголовок сообщения:  Re: utf-8 бд

snark писал(а):
Один раз укажут кодировку и вопрос отпадет, но будет задаваться другими :(

Изображение


А это excell ? Или openoffice/libreoffice?. У меня винды под руками нет , поэтому не могу проверить в excell, почему то мне запомнилось что он не спрашивает кодировку при открытии csv-файлов . В openoffice/libreoffice то проблем нет - там сразу окошко вылетает с выбором кодировки при открытии.

Автор:  dimOn [ 08 фев 2013, 14:35 ]
Заголовок сообщения:  Re: utf-8 бд

поздно, я везде уже поменял

Автор:  snark [ 08 фев 2013, 14:38 ]
Заголовок сообщения:  Re: utf-8 бд

stark писал(а):
А это excell ? Или openoffice/libreoffice?

Это openoffice, но можу и на ёкселе проверить если надо.

Автор:  northbear [ 09 фев 2013, 00:14 ]
Заголовок сообщения:  Re: utf-8 бд

О. ну таки здравый смысл восторжествовал! Одобрям-с целиком и полностью...
Менять однозначно. Особенно тем, у кого биллинг вертится на Linux...

А лучше всем и сразу, дабы вообще забыть тему кодировок как класс. Писать данные в базу можно будет на любом языке...

Минус, кроме дополнительной операции при апгрейде, база станет больше. Точнее та часть, что отвечает за договора. Это мизер, если у вас база хранит данные за 3-4 года...

В общем всё правильно делаете, ребята... Желаю вам удачи.

Я, к счастью или к сожалению, из телекома ушёл в разработку и уже наверное не ваш клиент. Но должен сказать, что BG-Billing оставил впечатление надежного, рабочего продукта. Особенно на фоне всяких UTM и LAN-billing'ов наших партнеров. За 6-7 лет эксплуатации серьезных сбоев по вине биллинга не было ни разу... Но backup'ы всё равно рулят... ))

Автор:  survivor [ 29 мар 2013, 20:15 ]
Заголовок сообщения:  Re: utf-8 бд

У кого-нибудь есть успешный опыт конвертации? Есть какие-нибудь грабли?
Хочу попробовать конвертнуться в utf :)

Сервер 5.2 сборка 1443

Автор:  dimOn [ 01 апр 2013, 11:33 ]
Заголовок сообщения:  Re: utf-8 бд

У некоторых из наших клиентов база всегда была в utf-8, вроде всё работало. По сути никакой разницы биллингу нету, мы проверяли :)

Автор:  survivor [ 01 апр 2013, 12:48 ]
Заголовок сообщения:  Re: utf-8 бд

А у меня сконвертить не получается :(
iconv спотыкается на символах 0x098:
iconv: illegal input sequence at position ...

а этих символов в дампе базы чуть менее чем много...

Автор:  dimOn [ 01 апр 2013, 14:58 ]
Заголовок сообщения:  Re: utf-8 бд

а как конвертитуете то?

Автор:  snark [ 01 апр 2013, 16:50 ]
Заголовок сообщения:  Re: utf-8 бд

Скорее всего так:
Код:
cat dump_cp1251.sql | iconv -f CP1251 -t UTF-8 > dump_utf8.sql

Но походу в дампе есть табличка с модулями лежащими в БД и на ней iconv спотыкается.

Автор:  survivor [ 01 апр 2013, 17:30 ]
Заголовок сообщения:  Re: utf-8 бд

Цитата:
а как конвертитуете то?


Код:
mysqldump -u root -p --quick --single-transaction --default-character-set=cp1251 -r original.sql bgbilling
iconv -f CP1251 -t UTF-8 -o utf.sql original.sql


Цитата:
Но походу в дампе есть табличка с модулями лежащими в БД и на ней iconv спотыкается.

точно

P.S.
Базу я уже грохнул и создал изначально уникодовой :)

Автор:  snark [ 01 апр 2013, 17:42 ]
Заголовок сообщения:  Re: utf-8 бд

Делай дамп _без_ таблички с модулями - все прокатит.

Автор:  stark [ 01 апр 2013, 19:56 ]
Заголовок сообщения:  Re: utf-8 бд

snark писал(а):
Делай дамп _без_ таблички с модулями - все прокатит.

Не факт.. Еще есть поля, где хранится xml целиком(счета в бухгалтерии, и другие места есть). Там 2 случая
1) xml уже в utf8, тогда конвертер ее испортит .
2) xml в cp1251, то конвертер поменяет ее содержимое на правильное , но не поменяет заголовок , поэтому при чтении они неправильно будет интерпретироваться, в этом случае заголовок отдельным запросом поправить нужно.

Автор:  stark [ 01 апр 2013, 20:01 ]
Заголовок сообщения:  Re: utf-8 бд

Еще есть способ через alter table ..convert .
http://deer.org.ua/2009/08/02/1/

Но с xml опять те же проблемы .

Автор:  survivor [ 02 апр 2013, 11:18 ]
Заголовок сообщения:  Re: utf-8 бд

Кстати, хоть я и получил в итоге utf8 базу (пересоздав) и хоть я и коннекчусь к ней из сервера по utf8:
db.url=jdbc:mysql://127.0.0.1/bgbilling?useUnicode=true&characterEncoding=utf8&allowUrlInLocalInfile=...
и домашний кабинет открывается тоже в utf8, все равно иноязычные символы будучи вбиты - например - в новости, отображаются и клиенте и в домашнем кабинете как вопросики.... :(

Страница 1 из 2 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/