Что набор символов и сопоставление означают точно?

Я бы рекомендовал использовать PDO (объекты данных PHP) для запуска параметризованных SQL-запросов.

Это не только защищает от SQL-инъекции, но и ускоряет выполнение запросов.

И используя функции PDO, а не mysql_, mysqli_ и pgsql_, вы делаете свое приложение немного более абстрактным из базы данных, в редких случаях, когда вам нужно переключать поставщиков баз данных .

296
задан simhumileco 14 September 2018 в 06:23
поделиться

3 ответа

Из документов MySQL :

А набор символов является рядом символов и кодировки. сопоставление является рядом правил для сравнения символов в наборе символов. Давайте ясно дадим понять различие с примером мнимого набора символов.

предположим, что у нас есть алфавит с четырьмя буквами: 'B', 'b'. Мы даем каждой букве число: = 0, 'B' = 1, = 2, 'b' = 3. Буква символа, номер 0 является кодированием для, и комбинация всех четырех букв и их кодировки является набором символов.

Теперь, предположите, что мы хотим сравнить два строковых значения, и 'B'. Самый простой способ сделать это должно посмотреть на кодировку: 0 для и 1 для 'B'. Поскольку 0 меньше чем 1, мы говорим меньше, чем 'B'. Теперь, то, что мы только что сделали, применяют сопоставление к нашему набору символов. Сопоставление является рядом правил (только одно правило в этом случае): "сравните кодировку". Мы называем это самым простым из всех возможных сопоставлений двоичное сопоставление.

, Но что, если мы хотим сказать, что строчные и прописные буквы эквивалентны? Тогда у нас было бы по крайней мере два правила: (1) рассматривайте строчные буквы и 'b' как эквивалентные и 'B'; (2) тогда сравните кодировку. Мы называем это нечувствительным к регистру сопоставлением. Это немного более сложно, чем двоичное сопоставление.

В реальной жизни, большинство наборов символов имеет много символов: не только и 'B', но и целые алфавиты, иногда несколько алфавитов или восточных систем письменности с тысячами символов, наряду со многими специальными символами и знаками пунктуации. Также в реальной жизни, большинство сопоставлений имеет много правил: не только нечувствительность к регистру, но также и нечувствительность диакритического знака ("диакритический знак" является меткой, присоединенной к символу как на немецком языке 'Г ¶'), и несколько - символьные отображения (такие как правило, что 'Г ¶' = 'OE' в одном из двух немецких сопоставлений).

489
ответ дан revo 23 November 2019 в 01:32
поделиться

кодировка символов является способом закодировать символы так, чтобы они уместились в памяти. Таким образом, если набор символов будет ISO-8859-15, европейский символ, в‚ ¬, будет закодирован как 0xa4, и в UTF-8, это будет 0xe282ac.

сопоставление - то, как сравнить символы в latin9, существуют буквы как e é è ê f, если отсортировано по их двоичному представлению, это пойдет e f é ê è, но если сопоставление будет установлено на, например, французский язык, у Вас будут они в порядке, Вы думали, что они будут, который является всеми из e é è ê, равны, и затем f.

195
ответ дан informatik01 23 November 2019 в 01:32
поделиться

Набор символов является подмножеством всех записанных глифов. Кодировка символов определяет, как те символы отображаются на числовых значениях. Некоторые кодировки символов, как UTF-8 и UTF-16, могут закодировать любой символ в Универсальном наборе символов. Другие, как US-ASCII или ISO-8859-1 могут только закодировать маленькое подмножество, так как они используют 7 и 8 битов за символ, соответственно. Поскольку много стандартов определяют и набор символов и кодировку символов, термином "набор символов" часто заменяют свободно "кодировку символов".

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

Выбор набора символов и сопоставления сводится, интернационализируется ли Ваше приложение или нет. В противном случае, для какой локали Вы нацелены?

для выбора, какой набор символов Вы хотите поддерживать, необходимо рассмотреть заявление. При хранении предоставленного пользователями входа могло бы быть трудно предвидеть все локали, в которых будет в конечном счете использоваться программное обеспечение. Для поддержки их всех могло бы быть лучше поддерживать UCS (Unicode) от запуска. Однако существует стоимость для этого; много западноевропейских символов теперь потребуют двух байтов устройства хранения данных на символ вместо одного.

Выбор правильного сопоставления может помочь производительности, если Ваша база данных использует сопоставление для создания индекса и более позднего использования, которое индексирует для обеспечения отсортированных результатов. Однако, так как правила сопоставления являются часто определенными для локали, тот индекс будет бесполезен, если необходимо отсортировать результаты согласно правилам другой локали.

20
ответ дан erickson 23 November 2019 в 01:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: