В чем разница между utf8_bin и latin1_general_cs

0

Для SQL, если я просто использую таблицы для хранения латинских (или, точнее, просто английских) строк с учетом регистра, то будет ли разница между utf8_bin и latin1_general_cs?

  • 0
    Вы помечаете тег <sql> для ANSI SQL. Возможно, вам следовало использовать тег <sql-server>?
  • 0
    изменили теги. Спасибо
Показать ещё 1 комментарий
Теги:
mariadb

2 ответа

0

Кодировка английских символов одинакова для latin1 и utf8 (и большинства других CHARACTER SETs поддерживаемых MySQL). Таким образом, английский текст работает одинаково между кодировками.

Оба COLLATIONs будут работать одинаково. Например, A ! = В любом случае. a

Вернемся к вопросу...

  • Для английского нет никакой разницы. Если это все, что у вас есть, выберите один из них.
  • Для акцентированных букв, найденных в Европе, кодировка (CHARACTER SET) отличается. И порядок букв с акцентом отличается.
  • Для персонажей из остального мира - вы не сможете хранить их в latin1, но вы можете хранить большинство из них в utf8.
  • latin1_bin также дает вам чувствительность к регистру. Для английского языка он будет неотличим от latin1_general_cs.

Мир MySQL движется к utf8mb4.

0

Если символы, которые вы хотите сохранить, представляются латиницей-1, то не будет иметь значения, за какие символы вы можете хранить. То, о чем вы особенно говорите, - это сортировки. При использовании сопоставления latin1_general_cs это означает, что кодировка для столбца - latin1. Точно так же в collation utf8_bin подразумевается кодировка utf8.

Прежде всего, вы должны выбрать кодировку, которую хотите использовать, и для каждой кодировки вы можете выбрать несколько комбинаций. Сопоставление влияет на сортировку и сравнение записей. _bin сопоставления сравнивают исходное двоичное представление вашего текста, т.е. равны только 100% -ные значения. Другие сопоставления, такие как _general_cs применяют правила сортировки и сравнения с _general_cs языка (например, german сортировки сортируют и сравнивают "ß" как близко к "s"), а _cs означает регистр, чувствительный к регистру. _ci было бы регистрозависимым, что означает, что "foo" и "Foo" сравниваются как равные.

Итак, возьмите свой выбор в зависимости от того, как вы собираетесь использовать столбец.

  • 0
    CHARACTER SET подразумевает кодирование. ß кодируется в шестнадцатеричном C39F DF (1 байт) в C39F 1 и C39F (2 байта) в utf8.
  • 0
    Конечно. Но я не уверен, что вы пытаетесь сделать?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню