Кодировка символов в таблицах для мультиязычного проекта
Кодировка символов в таблицах для мультиязычного проекта
Всегда считал что для многих языков нужно создавать кодировку в MySql utf8_general_ci.
Однако, скачав шаблон SamDark с примером магазина https://github.com/samdark/yii2-shop, заметил что кодировка там в таблицах https://github.com/samdark/yii2-shop utf8_unicode_ci!
Так какую кодировку необходимо ставить? Интернет говорит что там есть нюансы при сортировке. Якобы последняя работает лучше с немецким языком и другими, но медленнее.
Можете аргументировать в чью-то пользу? Я планирую приложение со многими языками - русский/английский/немецкий/итальянский/французкий/испанский/польский и так далее, если это суть важно.
Однако, скачав шаблон SamDark с примером магазина https://github.com/samdark/yii2-shop, заметил что кодировка там в таблицах https://github.com/samdark/yii2-shop utf8_unicode_ci!
Так какую кодировку необходимо ставить? Интернет говорит что там есть нюансы при сортировке. Якобы последняя работает лучше с немецким языком и другими, но медленнее.
Можете аргументировать в чью-то пользу? Я планирую приложение со многими языками - русский/английский/немецкий/итальянский/французкий/испанский/польский и так далее, если это суть важно.
Осторожно! Вы общаетесь с новичком
Re: Кодировка символов в таблицах для мультиязычного проекта
Сразу не обратил внимание, Александр указал в комментариях (прямо в миграции - предусмотрительный ) ссылку http://stackoverflow.com/questions/7668 ... unicode-ci, где объясняется сравнение кодировок, но там все по-английски, поэтому вопрос оставлю.
А вы какую разновидность utf8 используете в своих мультиязычных проектах?
А вы какую разновидность utf8 используете в своих мультиязычных проектах?
Осторожно! Вы общаетесь с новичком
Re: Кодировка символов в таблицах для мультиязычного проекта
Осторожно! Вы общаетесь с новичком
Re: Кодировка символов в таблицах для мультиязычного проекта
Если можно, то закрывайте (;girmate писал(а):Тему можно закрывать.
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: Кодировка символов в таблицах для мультиязычного проекта
Кодировка и collation — разные понятия. Кодировка определяет то, что мы можем хранить. collation — то, как мы сравниваем символы (то есть при =, LIKE, ORDER).
Кодировку на сегодняшний день для MySQL рекомендую utf8mb4. Collation utf8mb4_unicode_ci потому что юникод расширился несколько и в utf8 не всё влезает.
Кодировку на сегодняшний день для MySQL рекомендую utf8mb4. Collation utf8mb4_unicode_ci потому что юникод расширился несколько и в utf8 не всё влезает.
Нравится Yii? Давайте сделаем его лучше!.
Re: Кодировка символов в таблицах для мультиязычного проекта
Еще сложнее стало с выбором
Если у меня куча языков (включая немецкий и японский) и мне это нужно будет сравнивать и сортировать, то мне нужно выбрать utf8mb4_unicode_ci ?
Но для остальных полей (типа TEXT, например для правил сервиса или раздел "помощь"), мне можно ограничиться utf8_unicode_ci?
Или же для всех таблиц поставить utf8mb4_unicode_ci и не мучатся с выбором?
Если у меня куча языков (включая немецкий и японский) и мне это нужно будет сравнивать и сортировать, то мне нужно выбрать utf8mb4_unicode_ci ?
Но для остальных полей (типа TEXT, например для правил сервиса или раздел "помощь"), мне можно ограничиться utf8_unicode_ci?
Или же для всех таблиц поставить utf8mb4_unicode_ci и не мучатся с выбором?
Осторожно! Вы общаетесь с новичком
Re: Кодировка символов в таблицах для мультиязычного проекта
судя по названию, utf8_unicode_ci сделан давно и не поддерживает 4-байтные символы. После того как появилась необходимость, добавили новый коллейшн с поддержкой 4 байтов (mb4 - multibyte 4)
Re: Кодировка символов в таблицах для мультиязычного проекта
И тогда ответ на предыдущий вопрос будет какой?
Осторожно! Вы общаетесь с новичком
Re: Кодировка символов в таблицах для мультиязычного проекта
я правильно понял, вопрос звучит как: какой коллейшн выбрать - без поддержки 4 байт и с поддержкой 4 байт?girmate писал(а):И тогда ответ на предыдущий вопрос будет какой?
Re: Кодировка символов в таблицах для мультиязычного проекта
Не совсем.
Мультиязычный сайт - русский/английский/немецкий/японский. Где-то будет поиск и сортировка (адресная книга). Где-то не будет поиск и сортировка (раздел "помощь" или те же "контакты"). В каких случаях взять:
1. utf8mb4_unicode_ci;
2. utf8_unicode_ci;
3. utf8_general_ci?
Мультиязычный сайт - русский/английский/немецкий/японский. Где-то будет поиск и сортировка (адресная книга). Где-то не будет поиск и сортировка (раздел "помощь" или те же "контакты"). В каких случаях взять:
1. utf8mb4_unicode_ci;
2. utf8_unicode_ci;
3. utf8_general_ci?
Осторожно! Вы общаетесь с новичком
Re: Кодировка символов в таблицах для мультиязычного проекта
какое отношение поиск и сортировка имеют к коллейшну?girmate писал(а):Не совсем.
Мультиязычный сайт - русский/английский/немецкий/японский. Где-то будет поиск и сортировка (адресная книга). Где-то не будет поиск и сортировка (раздел "помощь" или те же "контакты").
я намекаю, что ответ уже есть в теме.girmate писал(а): 1. utf8mb4_unicode_ci;
2. utf8_unicode_ci;
3. utf8_general_ci?
Re: Кодировка символов в таблицах для мультиязычного проекта
Ну вот это я принимаю за ответ. Берем utf8mb4_unicode_ci и не волнуемся больше по этому поводу.Sam Dark писал(а):Кодировка и collation — разные понятия. Кодировка определяет то, что мы можем хранить. collation — то, как мы сравниваем символы (то есть при =, LIKE, ORDER).
Кодировку на сегодняшний день для MySQL рекомендую utf8mb4. Collation utf8mb4_unicode_ci потому что юникод расширился несколько и в utf8 не всё влезает.
Осторожно! Вы общаетесь с новичком
Re: Кодировка символов в таблицах для мультиязычного проекта
и не забываем нормализовать юникод ПЕРЕД попаданием в БД.girmate писал(а):Ну вот это я принимаю за ответ. Берем utf8mb4_unicode_ci и не волнуемся больше по этому поводу.Sam Dark писал(а):Кодировка и collation — разные понятия. Кодировка определяет то, что мы можем хранить. collation — то, как мы сравниваем символы (то есть при =, LIKE, ORDER).
Кодировку на сегодняшний день для MySQL рекомендую utf8mb4. Collation utf8mb4_unicode_ci потому что юникод расширился несколько и в utf8 не всё влезает.
https://habrahabr.ru/post/45489/
https://github.com/zelenin/string/blob/ ... former.php
Re: Кодировка символов в таблицах для мультиязычного проекта
Я так и знал, что казалось бы в практически решенном вопросе "вылезет" еще какая-нибудь лабуда. И теперь живи с этим.
Осторожно! Вы общаетесь с новичком
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: Кодировка символов в таблицах для мультиязычного проекта
Эээ... а зачем нормализовывать-то? В utf8mb4 умещается всё.
Нравится Yii? Давайте сделаем его лучше!.
Re: Кодировка символов в таблицах для мультиязычного проекта
https://habrahabr.ru/post/262679/Sam Dark писал(а):Эээ... а зачем нормализовывать-то? В utf8mb4 умещается всё.
Re: Кодировка символов в таблицах для мультиязычного проекта
Ну ники пользователей, если их можно только на английском писать (по умолчанию), нету же смысла хранить в utf8mb4_unicode_ci ?
Осторожно! Вы общаетесь с новичком
Re: Кодировка символов в таблицах для мультиязычного проекта
смысла нет, но нет смысла и разбираться в этом. Просто по дефолту mb4 везде используйтеgirmate писал(а):Ну ники пользователей, если их можно только на английском писать (по умолчанию), нету же смысла хранить в utf8mb4_unicode_ci ?
Re: Кодировка символов в таблицах для мультиязычного проекта
Ну я так и думал. Просто Вы сделали поправку на то, что у меня "по умолчанию" не может быть проекта, который выстрелит, типа зачем тебе еще париться с кодировками - бери вон ту, самую вместительную и не заморачивайся .
Осторожно! Вы общаетесь с новичком
Re: Кодировка символов в таблицах для мультиязычного проекта
https://meduza.io/feature/2016/09/10/on ... ez-ostatkaSam Dark писал(а):Эээ... а зачем нормализовывать-то? В utf8mb4 умещается всё.
вот кстати яркий пример почему надо нормализовывать юникод
Скриншот для тех, у кого нормально отображается