Кодировки UTF-8 и Windows 1251 — просто о сложном
Оглавление
- Немного теории
- Недостатки и достоинства
- Базы банных
- Htaccess
Здравствуйте, уважаемые читатели моего блога. Сегодня мы поговорим с вами про кодировку. Если вы читали мою статью о том, как посмотреть код страницы в браузере, то знаете, что любой документ в интернете хранится не в том виде, в каком мы привыкли его видеть. Он записан при помощи непонятных человеку символов и знаков. С текстом все точно также.
Существует несколько кодировок, а потому, иногда увидев непонятные символы при открытии книги в мобильном приложении или запилив статью на сайт, вы, поменяв кое-какие значения в настройках, увидите привычный глазу алфавит.
Кодировка windows-1251 – что это такое, какое значение она имеет при создании сайта, какие символы будут доступны и является ли она лучшим решением на сегодняшний день? Обо всем этом в сегодняшней статье. Как всегда, простым языком, максимально понятно и с минимальным количеством терминов.
Немного теории
Любой документ на компьютере или в интернете, как я уже сказал, хранится в виде двоичного кода.
К примеру, если вы используете кодировку ASCII, то буква «К» будет записана как 10001010, а windows 1251 под этим числом скрывается символ – Љ.
В итоге, если браузер или программа обратится к другой таблице и считает вместо ASCII коды windows 1251, то читатель увидит совершенно непонятные ему символ.
Логичен вопрос, нафига было придумывать множество таблиц с кодами? Дело в том, что помимо русского алфавита существует еще и английский, немецкий, китайский. По некоторым подсчетам, существует около 200 000 символов. Хотя, я не очень доверяю этой статистике, вспоминая про японский.
Не забывайте, что для заглавной и строчной буквы нужно придумать свой код, есть запятые, тире и так далее.
Чем больше в таблице символов, тем длиннее код каждого из них, а значит и вес документа становится больше.
Представьте, если бы одна книга весила 4 Гб! Она бы очень долго загружалась, занимала все свободное место на компьютере. Решение о скачивании представлялось бы делом нелегким.
Если вспомнить о сайтах, то вообще страшно подумать, что бы произошло. Каждая страничка открывалась даже на скоростном оптоволокне по часу с лишним! Думаю, мобильные телефоны можно было бы смело выкидывать. Пользоваться ими на улице даже с 4G? Сомневаюсь.
По этим причинам каждый программист в свое время старался придумать свою таблицу символов. Чтобы было удобно для использования и вес сохранялся оптимальным.
Microsoft, к примеру, для русскоязычного сегмента создали windows-1251. В ней, конечно же, есть свои достоинства и недостатки. Как и у любого другого продукта.
Сейчас уже, лишь 2% всех страниц в интернете написано на 1251. Большинство веб-мастеров используют UTF-8. Почему так?
Недостатки и достоинства
UTF-8, в отличие от windows-1251 универсальная кодировка, в ней содержатся буквы различных алфавитов. Существует даже UTF-128, где есть вообще все языки – теулу, суахили, лаосский, мальтийский и так далее.
UTF-8 победнее, буквы занимают в разы меньше места и занимают всего один байт памяти, как и в 1251. В УТФ есть редкие символы из других языков или специальные символы. Они-то и весят по 5-6 байтов, но в документе используются крайне редко.
Эта кодировка более продумана, а потому ее использует большинство приложений по умолчанию. То есть, если вы не указываете программе, какую кодировку вы используете, то первым делом он проверит именно UTF-8 .
Когда вы создаете html документ для сайта, то указываете браузерам на какую таблицу им обращать внимание при расшифровке записей.
Для этого необходимо вставить в тег head следующие данные. После символов «charset=» идет либо утф, либо виндовс, как в примере ниже.
Если в дальнейшем вы захотите что-то поменять и вставить фразу на албанском, используя эту таблицу расшифровок, то ничего не получится, ведь этого языка кодировка не поддерживает. UTF‑8 без проблем позволит вам это сделать.
Если вас заинтересовало правильное создание сайта, то я могу порекомендовать вам курс Михаила Русакова «Создание и Раскрутка сайта от А до Я».
Он содержит в себе очень много – 256 уроков, затрагивающих HTML, CSS, JavaScript, PHP, MySQL и XML. Помимо языков программирования вы сможете понять как монетизировать сайт, то есть скорее и больше получать прибыль. Один из немногих курсов, в котором было бы так подробно разъяснено все, что нужно.
Сам я вот уже год обучаюсь в школе блоггеров Александра Борисова. Это занимает в разы больше времени, конца и края пока не видно, но зато не менее исчерпывающе и дисциплинирует. Мотивирует продолжать разработку.
Ну а если возникают вопросы, не нужно искать по интернету. Всегда есть грамотный наставник.
Что-то я отошел от темы. Давайте вернемся к кодировкам.
Базы банных
Когда речь идет о php, все вообще страшно. Я уже рассказывал про базы данных, они используются для ускорения работы сайта. Обычно, вы к ним не обращаетесь, но когда появляется необходимость в переносе сайта становится не по себе.
Сложности случаются у всех, не важно какой у вас опыт работы, стаж и выслуга лет. Некоторые странички в базе могут содержать в себе все доступные символы для виндовс-1251, другие, к примеру, в шаблонах страниц, в другой кодировке.
Пока не нужен перенос все работает и функционирует, хоть и не совсем правильно. Но после переезда начинаются неприятности. В идеале вы должны использовать либо только УТФ, либо виндовс-1251, но по факту всегда и у всех случаются вот такие недочеты.
Чтобы расшифровка согласовалась необходимо вписать код mysql_query(«SET NAMES cp1251»). В этом случае преобразование будет осуществлять по другому протоколу – cp1251.
Htaccess
Если на сайте вы настойчиво решили использовать именно 1251, то вам следует найти или создать файл htaccess. Он отвечает за настройки конфигурации. В него придется добавить еще три строчки, чтобы все сошлось.
DefaultLanguage ru; AddDefaultCharset windows-1251; php_value default_charset “cp1251” |
DefaultLanguage ru; AddDefaultCharset windows-1251; php_value default_charset “cp1251”
Я все же настоятельно рекомендую вам задумать о использовании UTF-8. Он более популярен, прост и богат. Какие бы решения вы не приняли сейчас, важно, чтобы впоследствии можно было все исправить. Добавить англоязычную версию сайта на этой кодировке будет в разы проще. Ничего не нужно исправлять.
Решение остается за вами. Подписывайтесь на рассылку, чтобы узнавать как можно быстрее создавать правильные сайты, где учиться, чтобы не повторять чужих ошибок, а также какие блоггеры получают больше посетителей.
Источник: http://start-luck.ru/obsluzhivanie-sayta/kodirovka-windows-1251.html
Кодировка
По ходу выполнения прошлого задания кто-то из вас, уважаемые читатели, столкнулся с тем, что первая созданная страница вместо русского текста показала какие-то кракозябры. Это частая проблема среди новичков. Но ведь мы с каждым новым постом становимся все более опытнее, верно? Поэтому давайте раз и навсегда решим проблему с кодировкой, восполнив пробелы.
Кодировка, простыми словами — это таблица языковых символов.
Для удобства хранения в памяти компьютера каждый символ имеет свой адрес в таблице.
Отличный развернутый текст по теме кодировок представлен в статье «Кодировка текста и кракозябры — ASCII, юникод и UTF 8, расширенная ASCII (Windows 1251, CP866, KOI8-R), проблемы с кодировкой текстов».
Картинка из той статьи для ясности:
Таким образом в памяти хранится отдельно одна таблица, а все буквы, которые вы сейчас читаете, являются ссылками на ячейки этой таблицы.
Кодировок существует море. Например, раньше основной кириллической кодировкой Windows была KOI8-R. Это еще в совсем незапамятные времена.
В начале XXI века самой популярной стала Windows-1251, которая используется до сих пор.
Но проблема в том, что это узкоспециализированная на кириллице кодировка, поэтому многих общемировых символов в её таблице нет.
Ровно тоже самое было и с другими локальными кодировками.
Поэтому на смену им пришли Юникодовые кодировки, то есть универсальные. Чьи таблицы могли отобразить текст на любом языке мира.
Более подробно вы можете прочесть об этом в Вики:
http://ru.wikipedia.org/wiki/Юникод
Юникодовая кодировка UTF-8 на данный момент является самой распространённой, и мы работаем только с ней.
Почему? Если вы откроете свой сайт в кодировке Windows-1251, с компьютера из Японии, то вы не сможете его прочесть. Просто потому что у вашего знакомого японца на компьютере не установлена русская кодировка.
А универсальная юникодовая кодировка по-умолчанию ставится везде!
Запомните это название друзья, раз и на всю жизнь, — UTF-8.
Браузер
Программа, которой вы смотрите Интернет, умеет воспринимать кодировку по сигналу сервера. Но в прошлом уроке вы создали страницу на своем компьютере, никакого сервера нет.
И у некоторых после открытия она выглядела вот так:
Что же делать? Кричать «Караул!»? Без паники.
Вы можете исправить ситуацию несколькими способами.
Способ 1
Любой браузер дает возможность вручную переключать кодировку. Вот как это делается в Chrome (в остальных по аналогии):
Но это не лучший выход. Все равно, что лечить ангину леденцами. Вы правите следствие, но не устраняете первопричину.
Способ 2
Вставить внутри тега мета-тег кодировки:
Браузер, открывая страницу, прочитает его и выберет нужную кодировку.
Способ 3
Выше мы задали кодировку, в которой страницу трактует браузер.
Но можно задать кодировку самого текста в Notepad++.
Текущая указывается справа внизу окна:
ANSI — это родная кодовая страница Windows.
Поэтому в данном окне мы русские буквы видим нормально, а в браузере — нет.
Что можно сделать? Сменить кодировку на UTF-8.
Но в итоге перекодируется весь текст:
Нет, нам данный вариант не подходит.
Возвращаем обратно в прежнюю кодировку — Кодировки, Кодировать в ANSI.
Теперь копируем весь текст, нажимая Ctrl+A(выделить все) и Ctrl-X(вырезать).
Пустое окно редактора.
Выбирает — Кодировки, Кодировать в UTF-8.
И вот теперь жмем Ctrl+V, вставляя текст из буфера обмена.
Все, вот теперь порядок.
Выводы следующие, которые необходимо запомнить.
- Создавая новый документ, следите, чтобы он был в UTF-8 изначально.
- Если отображается в браузере неправильно, ставьте мета-тег. Способ 2.
- Способ 1 — он только для вас на конкретный момент. У других людей, открывших файл, могут быть проблемы.
Есть еще несколько способов, но они уже относятся к настройке сервера.Надеюсь, вы усвоили основные постулаты, и теперь знаете, как превратить иероглифы в родные русские буквы.
Источник: https://codemotion.ru/encoding-183.html
Что такое кодировка текста? Юникод и кодировки Utf-8, ANSI, Windows-1251
Charsets
Часто в веб-программировании и вёрстке html-страниц приходится думать о кодировке редактируемого файла — ведь если кодировка выбрана неверная, то есть вероятность, что браузер не сможет автоматически её определить и в результате пользователь увидит т.н. «кракозябры».
Возможно, вы сами видели на некоторых сайтах вместо нормального текста непонятные символы и знаки вопроса. Всё это возникает тогда, когда кодировка html-страницы и кодировка самого файла этой страницы не совпадают.
Вообще, что такое кодировка текста? Это просто набор символов, по-английски «charset » (character set). Нужна она для того, чтобы текстовую информацию преобразовывать в биты данных и передавать, например, через Интернет.
Собственно, основные параметры, которыми различаются кодировки — это количество байтов и набор спец.символов, в которые преобразуется каждый символ исходного текста.
Краткая история кодировок:
Одной из первых для передачи цифровой информации стало появление кодировки ASCII — American Standard Code for Information Interchange — Американская стандартная кодировочная таблица, принятая Американским национальным институтом стандартов — American National Standards Institute (ANSI).
В этих аббревиатурах можно запутатьсяДля практики же важно понимать, что исходная кодировка создаваемых текстовых файлов может не поддерживать все символы некоторых алфавитов (к примеру, иероглифы), потому идёт тенденция к переходу к т.н. стандарту Юникод (Unicode), который поддерживает универсальные кодировки — Utf-8, Utf-16, Utf-32 и др.
Самая популярная из кодировок Юникода — кодировка Utf-8. Обычно в ней сейчас верстаются страницы сайтов и пишутся разные скрипты.
Она позволяет без проблем отображать различные иероглифы, греческие буквы и прочие мыслимые и немыслимые символы (размер символа до 4-х байт). В частности, все файлы WordPress и Joomla пишутся именно в этой кодировке.
А также некоторые веб-технологии (в частности, AJAX) способны нормально обрабатывать только символы utf-8.
Установка кодировок текстового файла при создании его обычным блокнотом. Кликабельно
В Рунете же ещё можно встретить сайты, написанные с расчётом на кодировку Windows-1251 (или cp-1251). Это специальная кодировка, предназначенная специально для кириллицы.
Почему вообще необходимо иметь представление о разных кодировках? Дело в том, что нередко на том же WordPress можно встретить, например, в Footer’е знаки вопроса вместо нормального текста. Это просто говорит о том, что php-файл Footer’а сохранён в одной кодировке, а в заголовке html-страницы указана совсем другая кодировка. Прочитайте — как сменить кодировку файла и что в этом поможет.
(1
Источник: http://web-ru.net/sajtostroenie/texnicheskie-momenty/chto-takoe-kodirovka-teksta-yunikod-i-kodirovki-utf-8-ansi-windows-1251.html
Таблица кодов символов Windows-1251
Windows-1251 — набор символов и кодировка, являющаяся стандартной 8-битной кодировкой для всех русских версий Microsoft Windows. Данная кодировка пользуется довольно большой популярностью в восточно-европейских странах.
Windows-1251 выгодно отличается от других 8-битных кириллических кодировок (таких как CP866, KOI8-R и ISO 8859-5) наличием практически всех символов, использующихся в традиционной русской типографике для обычного текста (отсутствует только знак ударения). Кириллические символы идут в алфавитном порядке.
Windows-1251 также содержит все символы для близких к русскому языку языков: белорусского, украинского, сербского, македонского и болгарского.
На практике этого оказалось достаточно, чтобы кодировка Windows-1251 закрепилась в интернете вплоть до распространения UTF-8.
000 | 00 | NOP | 128 | 80 | Ђ |
001 | 01 | SOH | 129 | 81 | Ѓ |
002 | 02 | STX | 130 | 82 | ‚ |
003 | 03 | ETX | 131 | 83 | ѓ |
004 | 04 | EOT | 132 | 84 | „ |
005 | 05 | ENQ | 133 | 85 | … |
006 | 06 | ACK | 134 | 86 | † |
007 | 07 | BEL | 135 | 87 | ‡ |
008 | 08 | BS | 136 | 88 | € |
009 | 09 | TAB | 137 | 89 | ‰ |
010 | 0A | LF | 138 | 8A | Љ |
011 | 0B | VT | 139 | 8B | ‹ |
012 | 0C | FF | 140 | 8C | Њ |
013 | 0D | CR | 141 | 8D | Ќ |
014 | 0E | SO | 142 | 8E | Ћ |
015 | 0F | SI | 143 | 8F | Џ |
016 | 10 | DLE | 144 | 90 | ђ |
017 | 11 | DC1 | 145 | 91 | ‘ |
018 | 12 | DC2 | 146 | 92 | ’ |
019 | 13 | DC3 | 147 | 93 | “ |
020 | 14 | DC4 | 148 | 94 | ” |
021 | 15 | NAK | 149 | 95 | • |
022 | 16 | SYN | 150 | 96 | – |
023 | 17 | ETB | 151 | 97 | — |
024 | 18 | CAN | 152 | 98 | |
025 | 19 | EM | 153 | 99 | ™ |
026 | 1A | SUB | 154 | 9A | љ |
027 | 1B | ESC | 155 | 9B | › |
028 | 1C | FS | 156 | 9C | њ |
029 | 1D | GS | 157 | 9D | ќ |
030 | 1E | RS | 158 | 9E | ћ |
031 | 1F | US | 159 | 9F | џ |
032 | 20 | SP | 160 | A0 | |
033 | 21 | ! | 161 | A1 | Ў |
034 | 22 | “ | 162 | A2 | ў |
035 | 23 | # | 163 | A3 | Ћ |
036 | 24 | $ | 164 | A4 | ¤ |
037 | 25 | % | 165 | A5 | Ґ |
038 | 26 | & | 166 | A6 | ¦ |
039 | 27 | ' | 167 | A7 | § |
040 | 28 | ( | 168 | A8 | Ё |
041 | 29 | ) | 169 | A9 | © |
042 | 2A | * | 170 | AA | Є |
043 | 2B | + | 171 | AB | « |
044 | 2C | , | 172 | AC | ¬ |
045 | 2D | – | 173 | AD | |
046 | 2E | . | 174 | AE | ® |
047 | 2F | / | 175 | AF | Ї |
048 | 30 | 176 | B0 | ° | |
049 | 31 | 1 | 177 | B1 | ± |
050 | 32 | 2 | 178 | B2 | І |
051 | 33 | 3 | 179 | B3 | і |
052 | 34 | 4 | 180 | B4 | ґ |
053 | 35 | 5 | 181 | B5 | µ |
054 | 36 | 6 | 182 | B6 | ¶ |
055 | 37 | 7 | 183 | B7 | · |
056 | 38 | 8 | 184 | B8 | ё |
057 | 39 | 9 | 185 | B9 | № |
058 | 3A | : | 186 | BA | є |
059 | 3B | ; | 187 | BB | » |
060 | 3C | 190 | BE | ѕ | |
063 | 3F | ? | 191 | BF | ї |
064 | 40 | @ | 192 | C0 | А |
065 | 41 | A | 193 | C1 | Б |
066 | 42 | B | 194 | C2 | В |
067 | 43 | C | 195 | C3 | Г |
068 | 44 | D | 196 | C4 | Д |
069 | 45 | E | 197 | C5 | Е |
070 | 46 | F | 198 | C6 | Ж |
071 | 47 | G | 199 | C7 | З |
072 | 48 | H | 200 | C8 | И |
073 | 49 | I | 201 | C9 | Й |
074 | 4A | J | 202 | CA | К |
075 | 4B | K | 203 | CB | Л |
076 | 4C | L | 204 | CC | М |
077 | 4D | M | 205 | CD | Н |
078 | 4E | N | 206 | CE | О |
079 | 4F | O | 207 | CF | П |
080 | 50 | P | 208 | D0 | Р |
081 | 51 | Q | 209 | D1 | С |
082 | 52 | R | 210 | D2 | Т |
083 | 53 | S | 211 | D3 | У |
084 | 54 | T | 212 | D4 | Ф |
085 | 55 | U | 213 | D5 | Х |
086 | 56 | V | 214 | D6 | Ц |
087 | 57 | W | 215 | D7 | Ч |
088 | 58 | X | 216 | D8 | Ш |
089 | 59 | Y | 217 | D9 | Щ |
090 | 5A | Z | 218 | DA | Ъ |
091 | 5B | [ | 219 | DB | Ы |
092 | 5C | 220 | DC | Ь | |
093 | 5D | ] | 221 | DD | Э |
094 | 5E | ^ | 222 | DE | Ю |
095 | 5F | _ | 223 | DF | Я |
096 | 60 | ` | 224 | E0 | а |
097 | 61 | a | 225 | E1 | б |
098 | 62 | b | 226 | E2 | в |
099 | 63 | c | 227 | E3 | г |
100 | 64 | d | 228 | E4 | д |
101 | 65 | e | 229 | E5 | е |
102 | 66 | f | 230 | E6 | ж |
103 | 67 | g | 231 | E7 | з |
104 | 68 | h | 232 | E8 | и |
105 | 69 | i | 233 | E9 | й |
106 | 6A | j | 234 | EA | к |
107 | 6B | k | 235 | EB | л |
108 | 6C | l | 236 | EC | м |
109 | 6D | m | 237 | ED | н |
110 | 6E | n | 238 | EE | о |
111 | 6F | o | 239 | EF | п |
112 | 70 | p | 240 | F0 | р |
113 | 71 | q | 241 | F1 | с |
114 | 72 | r | 242 | F2 | т |
115 | 73 | s | 243 | F3 | у |
116 | 74 | t | 244 | F4 | ф |
117 | 75 | u | 245 | F5 | х |
118 | 76 | v | 246 | F6 | ц |
119 | 77 | w | 247 | F7 | ч |
120 | 78 | x | 248 | F8 | ш |
121 | 79 | y | 249 | F9 | щ |
122 | 7A | z | 250 | FA | ъ |
123 | 7B | { | 251 | FB | ы |
124 | 7C | | | 252 | FC | ь |
125 | 7D | } | 253 | FD | э |
126 | 7E | ~ | 254 | FE | ю |
127 | 7F | DEL | 255 | FF | я |
Описание специальных (управляющих) символов
Первоначально управляющие символы таблицы ASCII (диапазон 00-31, плюс 127) были разработаны для того, чтобы управлять устройствами аппаратных средств, таких как телетайп, ввод данных на перфоленту и др.
Управляющие символы (кроме горизонтальной табуляции, перевода строки и возврата каретки) не используются в HTML-документах.
NUL, 00 | Null, пустой |
SOH, 01 | Start Of Heading, начало заголовка |
STX, 02 | Start of TeXt, начало текста |
ETX, 03 | End of TeXt, конец текста |
EOT, 04 | End of Transmission, конец передачи |
ENQ, 05 | Enquire. Прошу подтверждения |
ACK, 06 | Acknowledgement. Подтверждаю |
BEL, 07 | Bell, звонок |
BS, 08 | Backspace, возврат на один символ назад |
TAB, 09 | Tab, горизонтальная табуляция |
LF, 0A | Line Feed, перевод строкиСейчас в большинстве языков программирования обозначается как |
VT, 0B | Vertical Tab, вертикальная табуляция |
FF, 0C | Form Feed, прогон страницы, новая страница |
CR, 0D | Carriage Return, возврат кареткиСейчас в большинстве языков программирования обозначается как |
SO, 0E | Shift Out, изменить цвет красящей ленты в печатающем устройстве |
SI, 0F | Shift In, вернуть цвет красящей ленты в печатающем устройстве обратно |
DLE, 10 | Data Link Escape, переключение канала на передачу данных |
DC1, 11 DC2, 12DC3, 13DC4, 14 | Device Control, символы управления устройствами |
NAK, 15 | Negative Acknowledgment, не подтверждаю |
SYN, 16 | Synchronization. Символ синхронизации |
ETB, 17 | End of Text Block, конец текстового блока |
CAN, 18 | Cancel, отмена переданного ранее |
EM, 19 | End of Medium, конец носителя данных |
SUB, 1A | Substitute, подставить. Ставится на месте символа, значение которого было потеряно или испорчено при передаче |
ESC, 1B | Escape Управляющая последовательность |
FS, 1C | File Separator, разделитель файлов |
GS, 1D | Group Separator, разделитель групп |
RS, 1E | Record Separator, разделитель записей |
US, 1F | Unit Separator, разделитель юнитов |
DEL, 7F | Delete, стереть последний символ. |
Источник: http://wm-school.ru/html/html_win-1251.html
Выбираем кодировку: Windows-1251 или UTF-8
На днях пришлось решать небольшую проблему с плохой восприимчивостью комплекта Denwer к кодировки UTF-8. Проблема, честно говоря, оказалась пустяковая, и была решена минут за 15, 10 из которых заняло использование Гугла.
В этом время, исследуя различные форумы, я заметил, что для многие не могут разобраться с этой проблемой достаточно долго. Кроме того, понял, что многих интересует зачем вообще использовать UTF-8, если есть прекрасная такая “русская” кодировка Windows-1251. Вот и решил написать пару постов на эту тему.
Начну я с общего описания данных кодировок, а продолжу, непосредственно, описанием решения проблемы использования UTF-8 на пакете Denwer.
Не так давно, в связи со сложившимися обстоятельствами, решил отказаться от кодировки Windows-1251, с которой работал очень давно, и целиком и полностью перейти на UTF-8. Все причины перехода раскрывать не буду, но основные из них:
- большинство современных веб-платформ по-умолчанию работают именно на ней;
- её очень удобно использовать для создания мультиязычных проектов;
- набор используемых в кодировки символов около 100000;
- кодировка универсальная, т.е. русские символы и в Никарагуа остаются русскими.
Далее постараюсь написать несколько слов об основных отличиях кодировок Windows-1251 и UTF-8, а так же, в качестве бонуса, примеры объявления кодировки в HTML, PHP и для работы с базами данных MySQL.
Немного теории
Windows-1251 – набор символов и кодировка, являющаяся стандартной 8-битной кодировкой для всех русских версий Microsoft Windows. Пользуется довольно большой популярностью.
Windows-1251 выгодно отличается от других 8‑битных кириллических кодировок (таких как CP866, KOI8-R и ISO 8859-5) наличием практически всех символов, использующихся в русской типографике для обычного текста; она также содержит все символы для близких к русскому языку языков: украинского, белорусского, сербского и болгарского.
UTF-8 – в настоящее время распространённая кодировка, реализующая представление Юникода, совместимое с 8-битным кодированием текста. Нашла широкое применение в операционных системах и веб-пространстве.
Текст, состоящий только из символов Юникода с номерами меньше 128, при записи в UTF-8 превращается в обычный текст ASCII. Остальные символы Юникода изображаются последовательностями длиной от 2 до 6 байт.
Основные отличия кодировок
Главное отличие кодировок – это используемый набор символов. В UTF-8 гораздо больше количество символов возможно представить, чем в Windows- 1251. Кодировка Windows- 1251 однобайтовая, т.е. представить в ней можно только 255 символов. Для кириллицы, впрочем, этого вполне достаточно, именно поэтому однобайтовые кодировки до сих пор так массово применяются.
Символ в кодировке UTF-8 может кодироваться аж 6 байтами (пока используется только 4 и больше не планируется). Для русского языка, например, символ занимает 2 байта. Все символы, которые есть в таблице символов – поддерживаются этой кодировкой. К примеру, если вам нужен знак копирайта (©), то вам не нужно искать особый шрифт или же изображать символов в графическом формате.
Плюсы UTF-8:
- UTF-8 позволяет работать одновременно с несколькими языками, т.е. выдавать тексты, в которых используются символы разных алфавитов и даже иероглифы. С использованием кодировки 1251 это невозможно;
- использование UTF-8 позволяет отказаться от кодовых таблиц, трансляций символов и всех прочих извращений, что были ранее с однобайтовыми кодировками;
- Нет кучи кодировок для одного и того же языка, как это было ранее для русского: cp1251, cp866, koi8r, iso8859-5.
Минусы UTF-8…
А есть ли они у этой кодировки вообще? Я знаю только разных мифах и легендах на эту тему, вот некоторые из них: “У UTF-8 есть проблемы со старыми браузерами” – маловероятно… Во всяком случае, если под старыми не подразумевают Lynx и Mosaic _); “С UTF-8 возникают проблемы на сервере” – ну да, если сервер по-умолчанию пытается определить другую кодировку. Но это не минус кодировки, уж точно…
Источник: http://www.mindnotes.ru/server-i-hosting/vybiraem-kodirovku-windows-1251-ili-utf-8
Проблемы с кодировкой на сайте
Вы здесь: Главная – PHP – PHP Основы – Проблемы с кодировкой на сайте
Одной из самых частых проблем, с которой сталкивается начинающий Web-мастер (да и не только начинающие), это проблемы с кодировкой на сайте.
Даже у меня постоянно появляется при создании сайтов “абракадабра“. Но, благо, я прекрасно знаю, как эту проблему решить, поэтому всё привожу в порядок в течение нескольких секунд.
И в этой статье я постараюсь научить Вас также быстро решать проблемы, связанные с кодировкой на сайте.
Первое, что стоит отметить, это то, что все проблемы с появлением “абракадабры” связаны с несовпадением кодировки документа и кодировки, выставляемой браузером. Допустим, документ в windows-1251, а браузер почему-то выставляет UTF-8. А уже источником такого несовпадения могут быть следующие причины.
Первая причина
Неправильно прописан мета-тег content-type. Будьте внимательны, в нём всегда должна находиться та кодировка, в котором написан Ваш документ.
Вторая причина
Вроде бы, мета-тег прописан так, как Вы хотите, и браузер выставляет именно то, что Вы хотите, но почему-то всё равно с кодировкой проблемы. Здесь, почти наверняка, виновато то, что сам документ имеет отличную кодировку.
Если Вы работаете в Notepad++, то внизу справа есть название кодировки текущего документа (например, ANSI).
Если Вы ставите в мета-теге UTF-8, а сам документ написан в ANSI, то сделайте преобразование в UTF-8 (через меню “Кодировки” и пункт “Преобразовать в UTF-8 без BOM“).
Третья причина
Мета-тег написан правильно, кодировка документа верная, но браузер почему-то настойчиво выбирает другую кодировку. Это уже связано с настройками сервера. Способ решения данной проблемы можно прочитать здесь: как задать кодировку в htaccess.
Четвёртая причина
И, наконец, последняя популярная причина – это проблема с кодировкой в базе данных. Во-первых, убедитесь, что все Ваши таблицы и поля написаны в одной кодировке, которая совпадает с кодировкой остального сайта. Если это не помогло, то сразу после подключения в скрипте выполните следующий запрос:
SET NAMES 'utf8'
Вместо “utf8” может стоять другая кодировка. После этого все данные из базы должны выходить в правильной кодировке.
В данной статье я, надеюсь, разобрал, как минимум, 90% проблем, связанных с появлением “абракадабры” на сайте. Теперь Вы должны расправляться с такой популярной и простой проблемой, как неправильная кодировка, в два счёта.
Предыдущая статья Следующая статья
Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!
Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.
Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления
Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.
Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):
- Кнопка:
Она выглядит вот так:<\p>
- Текстовая ссылка:
Она выглядит вот так: Как создать свой сайт
- BB-код ссылки для форумов (например, можете поставить её в подписи):
Источник: https://MyRusakov.ru/php-encoding-problems.html
Кодировка сайта | Что такое кодировка Юникод
Кодировка сайта (Encoding) представляет собой соответствие числового ряда символам (числа, буквы, знаки и другие спецсимволы). Наиболее распространенными кодировками считаются ASCII совместно с Юникодом UTF-8 и Windows-1251. В контенте за кодировку отвечает специальный мета-тег: , который устанавливает определенный тип кода для страниц. В данном случае это юникод UTF-8.
Что такое кодировка сайта
Простыми словами это стандартные символы и цифры, которые соответствуют определенному типу набору письменных букв, чисел, знаков и прочих элементов. Чаще всего на сайте используется один тип кодировки, но бывают исключения, когда может быть установлено сразу несколько кодировок. Однако это может привести к некорректному отображению всего веб-ресурса.
Множество сайтов используют стандарт кодировки — UTF-8, так как именно этот вид кода поддерживается многими известнымибраузерами, поисковыми машинами, серверами и другими платформами. Очень часто встречаются ситуации, когда указанная на веб-сайте кодировка не совпадает с той, что установлена на сервере.
Основная причина этого явления – провайдер не поддерживает предоставленный вид кодировки, вследствие чего оправляет «свою», что собственно и приводит к некорректным отображениям информации. Кодировка — это таблица, в которой описывается любое соответствие конкретного символа и числа.
Каждый символ, который виден на сайте, для компьютера представляет всего лишь набор битов (некоторый набор из нулей и прочих единиц).
Виды кодировок сайта
Всего в мире интернета существует несколько видов кодировок:
- ASCII – самая первая кодировка, которая была принята Американским национальным институтом мировых стандартов. Для кодировки использовалось всего 7 бит, где впервые 128 значения размещается English алфавит, а также все числа, знаки и символы. Данная кодировка не является универсальной и чаще всего использовалась на англоязычных сайтах.
- Кириллица – истинно отечественный вариант. Кодировка использовала вторую часть основной кодовой таблицы, а точнее знаков с 129 по 256. Используется на русскоязычных сайтах и блогах.
- Кодировки 1250-1258 (системы MS Windows и Windows) – стандартные 8-ми битные кодировки, которые появились сразу после выхода известной операционной системы Microsoft Windows. Числа 1250 по 1258 направлены на используемый кодировкой язык. 1250 – это языки центральной Европы, а 1251 вариант для кириллического алфавита.
- КОИ8 – расшифровывается как код обмена информацией 8-ми битный. Обычно применяются стандарты русской кириллицы в системах Юникс и подобных, где действует стандарт KOI-7, KOI8-R и KOI8-U.
- Юникод (оригинальное название Unicode) – является известным стандартом для кодирования символов, который позволяет описывать знаки буквально всех мировых языков. Часто обозначается «U+xxxx», где «хххх» — это 16-ричные значения. Наиболее распространенным семейством данной кодировки считается UTF (Unicode-Transformation Format), то есть UTF-8, 16 и 32.
Каждый отдельный вид может использоваться непосредственно на любом сайте.
Универсальные и популярные кодировки
На сегодняшний день наиболее популярной и всем известной считается кодировка UTF-8, а именно благодаря ей возможно обеспечить максимальную совместимость со всеми старыми системами, которые использовали обычные 8-бит типы символов. Кодировка UTF-8 включает в себя большинство сайтов, которые находятся в интернете, а именно данный стандарт считается универсальным. UTF-8 поддерживает как кириллицу, так и латиницу.
Источник: http://Cropas.by/seo-slovar/kodirovka-sajta/