Пишу о программировании, книгах, науке и жизни
2 заметки с тегом

utf8

О кодировках

9 февраля 2015, 13:36

Старые добрые кодировки, вроде Windows-1251 были однобайтными. Одному символу — один байт. Работать с ними было одно удовольствие. Хочешь узнать длину строки (количество символов): это просто количество байт. Нужен 5-й символ: просто нужен пятый байт от начала строки. Единственный минус: в нашем многополярном мире 256 различных символов, это слишком мало. Особенно для китайцев с их тысячами иероглифов.

Поэтому теперь мы все любим Unicode. В юникоде много разных кодировок на все случаи жизни. Вот, например, UTF-8: в нём можно закодировать любой Unicode-символ хитрой переменного размера последовательностью байт. При этом базовая ASCII в нём остаётся такого же вида, как и в старых кодировках. Можно читать английские тексты не думая о кодировках, исходники программ и HTML/XML файлы сохраняют свою структуру, а наиболее популярные символы занимают меньше места, чем всякие иероглифы, что тоже приятно.

Неудобно его только обрабатывать. Чтобы узнать длину строки или найти N-й символ, нужно проходить по всем байтам сначала и производить над каждым разные вычисления. Что напрягает. Поэтому в памяти строки лучше хранить в какой-нибудь кодировке фиксированного размера.

http://blgo.ru/blog/2015/02/08/javascript-surrogate/

Разница между utf8_general_ci и utf8_unicode_ci

21 сентября 2014, 18:48

utf8_general_ci

  • Быстрее, но при сортировке менее точен

utf8_unicode_ci

  • Более правильный, поддерживает расширения, но медленнее
  • Поддерживает expansions, то есть сопоставление одного символа нескольким (например — в Германии ß = ss )

Если сайт только на русском / английском, то utf8_general_ci — правильный выбор.

mysql   utf8