СКРИПТЫ alt phpjshtmlcssblog
ТЕГИ:
php (267)
js (136)
html (132)
css (98)
html tags (58)
edit text (37)
jquery (36)
form html (29)
php array (28)
foto (23)
fonts (22)
forum (19)
atom (18)
html book (17)
board (17)
Показать еще :
js method (16)
svg (16)
hosting (15)
php file (15)
color (14)
osclass (13)
htaccess (13)
ruweb.net (13)
table (12)
path (12)
icon (11)
php date (11)
online (11)
info (11)
js delete (11)
notepad (11)
yandex (11)
input (11)
php img (10)
url (10)
jsphp (10)
form (8)
cookie (7)
task (7)
php url (7)
comment (7)
ftp (6)
click (6)
js url (6)
value (5)
reg.ru (5)
mb (5)
adminka (5)
js id (4)
select (4)
search (4)
bbcode (4)
js copy (4)
js form (4)
iframe (3)
js time (3)
vs code (3)
captcha (3)
vk (3)
ukoz (2)
browser (2)
dosite (2)
seo (2)
tag hr (2)
js post (2)
sitemap (2)
console (2)
header (1)
domen (1)
smile (1)
ssl (1)
books (1)
numbers (1)
archive (1)

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

Отличие 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 не работают?
    Что делать, если функция для кириллицы на 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

Пользуйтесь на здоровье! Не забудьте сказать спасибо
Теги :
Отличие utf и windows
utf-8 vs windows-1251

Сообщение системы комментирования :

01.09.2021

Форма пока доступна только админу... скоро все заработает...надеюсь...

Последние комментарии :
Марат :
17.10.2021 39:28
Давно не делал и страницу и видео в один день... чет, как-то выжитый как…
подробнее.
Марат :
10.10.2021 17:20
Добавлен новый смайл
подробнее.
Марат :
05.10.2021 26:37
Страница sitemap.html восстановлена. Но будут вводиться только страницы…
подробнее.
Марат :
04.10.2021 38:22
Добавил несколько вариантов поставить смайл на страницу своего сайта! 3 варианта! Кроме варианта скачать…
подробнее.
Марат :
17.09.2021 28:02
Установка Яндекс поиск на сайт! Контент обновлен на 100%. Такое ощущение, что старый текст не я…
подробнее.
Марат :
07.09.2021 23:21
Частенько приходится исправлять ошибки и вот...как-то я обратил внимание на надпись: "нажми ctrl enter" на сайте и…
подробнее.