Всех друзей поздравляем с Новым годом! Всего вам самого наилучшего! Всех благ, здоровья а материальное приложится!
СКРИПТЫ alt htmlcssphpjsblog

Отличие utf-8 и windows 1251

Поддержи проект!!! smile

Отличие utf-8 и windows 1251. Рассмотрим, чем отличаются две кодировки "utf-8 и windows 1251" в теории и на практике. И как победить некоторые проблемы для кириллицы в utf-8!?

О разнице между двумя кодировками utf-8 и windows 1251

  1. О кодировках utf-8 и windows 1251
  2. Пример вывода текста в кодировках utf-8 латиницы
  3. Пример вывода текста в кодировках utf-8 кириллицы
  4. Пример отличия в кодировках utf-8 и windows 1251
  5. Как перекодировать строку из utf-8 в windows 1251

  1. О кодировках utf-8 и windows 1251

    Самое главное. что нас интересует, как и меня - в чем же отличие кодировок utf-8 и windows 1251. И отличается только кириллица!

    Чем отличаются utf-8 и windows 1251

    UTF-8 - это много-байтовая кодировка, а Windows- 1251 однобайтовая. И более того, отличие только в кириллице.

    Количество байтов кириллицы в UTF-8 будет в 2 раза больше, чем 1). латиницы в UTF-8 и 2). латиницы + кириллицы в Windows- 1251 → пример

    Главное отличие кодировок – это используемый набор символов. В UTF-8 гораздо больше количество символов возможно представить, чем в Windows- 1251. Кодировка Windows- 1251 однобайтовая, т.е. представить в ней можно только 255 символов. Для кириллицы, впрочем, этого вполне достаточно, именно поэтому однобайтовые кодировки до сих пор так массово применяются.

    Что такое кодировка windows 1251

    Windows-1251 – набор символов и кодировка, являющаяся стандартной 8-битной кодировкой для всех русских версий Microsoft Windows. Пользуется довольно большой популярностью. Windows-1251 выгодно отличается от других 8‑битных кириллических кодировок (таких как CP866, KOI8-R и ISO 8859-5) наличием практически всех символов, использующихся в русской типографике для обычного текста; она также содержит все символы для близких к русскому языку языков: украинского, белорусского, сербского и болгарского.

    Что такое кодировка UTF-8

    UTF-8 – в настоящее время распространённая кодировка, реализующая представление Юникода, совместимое с 8-битным кодированием текста. Нашла широкое применение в операционных системах и веб-пространстве. Текст, состоящий только из символов Юникода с номерами меньше 128, при записи в UTF-8 превращается в обычный текст ASCII. Остальные символы Юникода изображаются последовательностями длиной от 2 до 6 байт.

    Символ в кодировке UTF-8 может кодироваться аж 6 байтами (пока используется только 4 и больше не планируется). Для русского языка, например, символ занимает 2 байта. Все символы, которые есть в таблице символов – поддерживаются этой кодировкой. К примеру, если вам нужен знак копирайта (©), то вам не нужно искать особый шрифт или же изображать символов в графическом формате.


  2. Пример вывода текста в кодировках utf-8 латиницы

    Когда и если вы прочитали теорию о разнице кодировок utf-8 и windows 1251 - это уже победа! wall

    А если вы еще и поняли о чем идет речь, то вы вообще Эйнштейн! good, то и смысла особого вам читать дальше нет.

    А для всех остальных продолжим...

    Чем отличается текст в кодировках utf-8 и windows 1251

    Теория - это конечно классно и круто, но как обстоит дело на практике!

    Как показать отличие двух кодировок!?

    У нас на сайте основная кодировка utf-8, и мы не напрягаясь можем посмотреть, что творится с текстом в этой кодировке!

    Нам понадобится какой-то текст на латинице:

    И... нам нужно такое слово, чтобы имело одинаковое количество букв в слове, ну пусть это будет моё имя...

    Пусть это будет слово - "Marat!"

    Далее нам потребуется функция var_dump.

    И выведем прямо здесь вот такую конструкцию :

    var_dump('Marat');

    Результат:

    string(5) "Marat"

    Что мы здесь можем прочитать!?

    Что это строка, и что в ней 5 элементов.


  3. Пример вывода текста в кодировках utf-8 кириллицы

    Теперь, проделаем тоже самое со строкой на кириллице:

    У нас все таже кодировка utf-8.

    Но теперь нам понадобится текст на кириллице:

    Пусть это будет слово - "Марат!"

    Опять var_dump.

    И выведем прямо здесь вот такую конструкцию :

    var_dump('Марат');

    Результат:

    string(10) "Марат"

    И что мы здесь видим!?

    Что количество элементов в строке 10... Если вы читали теорию внимательно, то вот вам показатель того, что одна буква состоит из двух символов, а латиницы это не касается...!

    Поэтому, и возникают проблемы с текстов в кодировке utf-8 кириллицы, множество функций тупо не работают.

    Как пример...как-то я задолбался со strtolower в utf-8 для кириллицы, что решил написать собственную функцию strtolower, чтобы каждый раз не городить этажерку из нескольких функций...


  4. Пример отличия в кодировках utf-8 и windows 1251

    Если вы поленились прочитать два верхних пункта, то ещё раз выведем результаты вывода текста на латинице и на кириллице с одним количеством букв.

    Результат вывода var_dump('Marat');:
    string(5) "Marat"
    Результат var_dump('Марат');:
    string(10) "Марат"

    Что делать, если функция для кириллицы на utf-8 не работают?

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

    Но если уж она возникала, то есть несколько вариантов решения!

    Это функции с приставкой "mb_", естественно надо проверять, работает ли она у вас на хостинге.

    Второй вариант, это написать собственную функцию, которая будет работать и для латиницы и кириллицы? как это я показал на функции strtolower

    И третий вариант перекодировать строку из utf-8 в windows 1251

    Рассмотрим, первый попавшийся на ум пример...

    Пусть это будет функция str_split и её аналог mb_str_split

    print_r (str_split('Марат')); выдаст :

    Array

    (

    [0] =>

    [1] =>

    [2] =>

    [3] =>

    [4] =>

    [5] =>

    [6] =>

    [7] =>

    [8] =>

    [9] =>

    )

    print_r (mb_str_split('Марат')); выдаст :

    Что делать, если функция для кириллицы на utf-8 не работают?

    Как видим... полный отстой...

    Мы далее разбирались с этим здесь.


  5. Как перекодировать строку из utf-8 в windows 1251

    Итак... есть третий вариант, борьбы с квадратиками(непонимание кодировки) - перекодировать строку из utf-8 в windows 1251:

    iconv("UTF-8", "windows-1251", $text)

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

    iconv("windows-1251", "UTF-8", $text)

    Рассмотрим пример перекодировки текста из UTF-8 в windows-1251 и обратно

    Мы использовали var_dump, и он посчитал не правильно, поскольку просто так, на страницу вывести данные с помощью var_dump нельзя, мы использовали вот такой костыль :

    ob_start();

    var_dump( 'Марат' );

    echo ob_get_clean();

    Теперь попробуем перекодировать строку прямо внутри :

    ob_start();

    var_dump(iconv("UTF-8", "windows-1251", 'Марат')) ;

    echo ob_get_clean() ;

    Результат подсчета знаков верный, но видим что слово не было перекодировано обратно :

    string(5) ""

    Исправим:

    ob_start();

    var_dump(iconv("UTF-8", "windows-1251", 'Марат')) ;

    echo iconv("windows-1251", "UTF-8", ob_get_clean());

    Результат :

    string(5) "Марат"

    Итак... вы видели процесс кодировки и перекодировки текста из utf-8 в windows 1251, а потом обратно!


    Вы наверное подумали :

    Что за дичь здесь происходит!? Это не дичь! Когда ты внутри, а не снаружи, то все кажется не простым, а очень простым.

    И чем больше ты в теме, это просто, как есть, пить, дышать... просто не задумываешься...

    Я не говорю, что всегда так, иногда бывает очень трудно какаю-то задачку решить... shootself2


Последняя дата редактирования : 07.04.2021 02:13
//dwweb.ru/comments_1_5/include/img/hand_no_foto.png
no
no
Еще никто не прокомментировал! COMMENTS+   BBcode
аватар
🞨
Загрузить свой аватар
(max ширина, высота = 200px)

Подписаться + =
Теги:
Отличие utf и windows utf-8 vs windows-1251

Счетчик в график :

Построение гравиков
Основа для графика : счетчик посещаемости.
Последние комментарии :
Марат :
12/06/2021 10:04
Рад, что понравилось!Приходите ещё!
подробнее.
Марат :
12/06/2021 10:03
Есть наглядное редактирование на самой странице - где есть? достаточно дописать в адресной строке что-то -…
подробнее.
Знаток :
11/06/2021 11:37
Есть наглядяное редактирование на самой странице (типа в реальном временем)- достаточно дописать в адресной…
подробнее.
Сергей :
09/06/2021 05:20
Спасибо за статью. Отличная работа!
подробнее.
Марат :
19/05/2021 12:38
Справа есть соц сети.... напишите личное сообщение...На главной(пункт №5) они также…
подробнее.