MySQL путает проблему с именами сопоставлений в соответствии с кодировками символов. Это отдельные понятия.
A сопоставление определяет способ сортировки строк реляционными операторами (<
, >
и т. Д.) И ORDER BY
. Вопросы, рассматриваемые при сопоставлении:
- Прописные и строчные буквы считаются эквивалентными?
- Является ли пробел значимым?
- Сортируются ли буквы с акцентом по сравнению с версиями без акцента, после версий без акцента или по окончании?
- Органы управления, такие как "ch" и "ll", отсортированы как отдельные буквы?
- Одинаковы ли совместимость с Unicode, например, AᴬⒶA?????????????, одинаково?
Некоторые из них зависят от языка.
A кодировка символов определяет, как текстовые значения преобразуются в и из последовательностей байтов. Хорошее введение см. В Абсолютном минимуме, который должен быть у каждого разработчика программного обеспечения. Абсолютно, положительно необходимо знать о Unicode и наборах символов (без оправданий!) .
Существуют сотни различных кодировок символов, большинство из которых относятся к определенной комбинации операционной системы и локали. Большинство из них являются надмножествами US-ASCII , поэтому если вы чертовски уверены ваши данные будут только в ASCII, не имеет значения, какая кодировка вы используете.
Но если вам нужны другие символы, вам нужна кодировка, которая может их обработать. Для западных языков, ваш выбор обычно:
Разница между ними:
- Для западноевропейских символов с акцентом UTF-8 требуется 2 байта, в то время как для Latin-1 требуется только 1 байт.
- Но другие символы вообще не могут быть представлены в Latin-1. UTF-8 может представлять все возможные символы Unicode.