Различия в базе данных UTF?Latin?так далее.? - PullRequest
2 голосов
/ 07 августа 2010

Что такое использование параметров сортировки для базы данных?Ну, для HTML UTF-8 я немного знаю, например, для отображения другого типа языка.Но как насчет базы данных?Я использую латиницу-1 (по умолчанию), мои друзья сказали мне использовать вместо UTF.Когда я спрашиваю почему, они не знают и говорят, что другие используют это.Итак, я задаюсь вопросом, что на самом деле делает сопоставление?Влияет ли это на скорость или что-то в этом роде?

Ответы [ 5 ]

9 голосов
/ 07 августа 2010

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.
3 голосов
/ 07 августа 2010

Я думаю, что вы перепутали термин кодировка и сопоставление

http://dev.mysql.com/doc/refman/5.0/en/charset-general.html

A набор символов - это набор символов и кодировок. сопоставление - это набор правил для сравнения символов в наборе символов.

latin1 и utf8 - допустимые кодировки в MySQL, а latin1_swedish_ci и utf8_general_ci - примеры сопоставлений.

1 голос
/ 07 августа 2010

Сортировка базы данных контролирует, как строки сравниваются / сортируются - и на более низком уровне, как интерпретируются сохраненные символьные данные.Latin-1 позволит хранить / сравнивать строки в кодовой странице latin-1.Если вам нужно обработать, например, японский текст, тогда UTF-8 - лучший выбор.

1 голос
/ 07 августа 2010

См. Это в Ответах о сопоставлениях. О наборах символов и кодовых страницах смотрите википедию. FYI latin1 подходит для английских и западноевропейских стран. UTF-8 подходит для универсального применения, которое может содержать, например, текст на китайском или арабском языке.

0 голосов
/ 07 августа 2010

Строго говоря, сопоставление базы данных будет влиять на сортировку символьных данных. Причиной использования UTF-8 может быть то, что вы храните данные UTF-8.

...