Что такое код utf8_decode


Что такое код utf8_decode

БлогNot. Таблица кодов кириллицы в Unicode, UTF-8 и Windows-1251

Таблица кодов кириллицы в Unicode, UTF-8 и Windows-1251

Во-первых, напомню, что Юникод — не кодировка, а стандарт кодирования, кодировки — это UTF-8, UTF-16 и т.д., но, в силу инерции, разработчики и пользователи часто говорят о «кодировке Юникод», имея в виду распространённую именно в их деревне форму представления символов :)

Во-вторых, на самом деле кодирование там довольно замудрённое, возьмём, скажем русскую заглавную «Ж».

Представляемые в Юникоде символы кодируются целыми числами без знака, их можно называть «кодами символов Unicode».

Так, для буквы «Ж» Unicode = 104610 или 041616 или 10000 0101102. Unicode в двоичном виде разбивается на две части: пять левых бит и шесть правых. Левая часть в старших разрядах дополняется до байта признаком 110 двухбайтного кода UTF-8, получаем 11010000. К правой части в старших разрядах приписываются два бита 10 признака продолжения многобайтного кода, получаем 10010110. Окончательно код буквы «Ж» в UTF-8 будет иметь вид 11010000 100101102 или D0 9616.

Именно последний код мы увидим в любом 16-ричном вьюере файла, например, создав в текстовом редакторе файл со словом «Жора» и сохранив его в UTF-8 (только не из Блокнотика Windows, который добавит в начало файла 3-байтовую метку BOM):

То есть, каждая буква кодируется как бы дважды, сначала в 11-битный Unicode, затем в 16-битный UTF-8.

Ниже приведена таблица кодов кириллицы в Unicode, UTF-8 и однобайтовой кодировке Windows-1251.

Символ Unicode UTF-8 Windows-1251
16-ричн. 10-тичн. 16-ричн. 10-тичн.
А 0410 1040 D090 208 144 192
Б 0411 1041 D091 208 145 193
В 0412 1042 D092 208 146 194
Г 0413 1043 D093 208 147 195
Д 0414 1044 D094 208 148 196
Е 0415 1045 D095 208 149 197
Ж 0416 1046 D096 208 150 198
З 0417 1047 D097 208 151 199
И 0418 1048 D098 208 152 200
Й 0419 1049 D099 208 153 201
К 041A 1050 D09A 208 154 202
Л 041B 1051 D09B 208 155 203
М 041C 1052 D09C 208 156 204
Н 041D 1053 D09D 208 157 205
О 041E 1054 D09E 208 158 206
П 041F 1055 D09F 208 159 207
Р 0420 1056 D0A0 208 160 208
С 0421 1057 D0A1 208 161 209
Т 0422 1058 D0A2 208 162 210
У 0423 1059 D0A3 208 163 211
Ф 0424 1060 D0A4 208 164 212
Х 0425 1061 D0A5 208 165 213
Ц 0426 1062 D0A6 208 166 214
Ч 0427 1063 D0A7 208 167 215
Ш 0428 1064 D0A8 208 168 216
Щ 0429 1065 D0A9 208 169 217
Ъ 042A 1066 D0AA 208 170 218
Ы 042B 1067 D0AB 208 171 219
Ь 042C 1068 D0AC 208 172 220
Э 042D 1069 D0AD 208 173 221
Ю 042E 1070 D0AE 208 174 222
Я 042F 1071 D0AF 208 175 223
а 0430 1072 D0B0 208 176 224
б 0431 1073 D0B1 208 177 225
в 0432 1074 D0B2 208 178 226
г 0433 1075 D0B3 208 179 227
д 0434 1076 D0B4 208 180 228
е 0435 1077 D0B5 208 181 229
ж 0436 1078 D0B6 208 182 230
з 0437 1079 D0B7 208 183 231
и 0438 1080 D0B8 208 184 232
й 0439 1081 D0B9 208 185 233
к 043A 1082 D0BA 208 186 234
л 043B 1083 D0BB 208 187 235
м 043C 1084 D0BC 208 188 236
н 043D 1085 D0BD 208 189 237
о 043E 1086 D0BE 208 190 238
п 043F 1087 D0BF 208 191 239
р 0440 1088 D180 209 128 240
с 0441 1089 D181 209 129 241
т 0442 1090 D182 209 130 242
у 0443 1091 D183 209 131 243
ф 0444 1092 D184 209 132 244
х 0445 1093 D185 209 133 245
ц 0446 1094 D186 209 134 246
ч 0447 1095 D187 209 135 247
ш 0448 1096 D188 209 136 248
щ 0449 1097 D189 209 137 249
ъ 044A 1098 D18A 209 138 250
ы 044B 1099 D18B 209 139 251
ь 044C 1100 D18C 209 140 252
э 044D 1101 D18D 209 141 253
ю 044E 1102 D18E 209 142 254
я 044F 1103 D18F 209 143 255

примечание: данная статья относится к python 2.x, но для python 3.x принцип тот же

Общее

В python есть 2 объекта работающими с текстом: unicode и str, объект unicode хранит символы в формате (кодировке) unicode, объект str является набором байт/символов в которых python хранит остальные кодировки (utf8, cp1251, cp866, koi8-r и др).

Кодировку unicode можно считать рабочей кодировкой питона т.к. она предназначена для её использования в самом скрипте — для разных операций над строками.
Внешняя кодировка (объект str) предназначена для хранения и передачи текстовой информации вне скрипта, например для сохранения в файл или передачи по сети. Поэтому в данной статье я её назвал внешней. Самой используемой кодировкой в мире является utf8 и число приложений переходящих на эту кодировку растет каждый день, таким образом превращаясь в «стандарт». Эта кодировка хороша тем что для хранения текста она занимает оптимальное кол-во памяти и с помощью её можно закодировать почти все языки мира ( в отличие от cp1251 и подобных однобайтовых кодировок). Поэтому рекомендуется везде использовать utf8, и при написании скриптов.

Использование


UTF-8 (Unicode Transformation Format, 8-bit — «формат преобразования Юникода, 8-битный») — одна из общепринятых и стандартизированных кодировок текста, которая позволяет хранить символы в Unicode. Стандарт UTF-8 официально закреплён в документах RFC 3629 и ISO/IEC 10646 Annex D. Кодировка нашла широкое применение в UNIX-подобных операционных системах и веб-пространстве. В качестве BOM использует последовательность байт EF16, BB16, BF16 (что является трёхбайтовой реализацией символа FEFF16). Одним из преимуществ является совместимость с ASCII — любые их 7-битные символы отображаются как есть, а остальные выдают пользователю мусор (шум). Поэтому в случае, если латинские буквы и простейшие знаки препинания (включая пробел) занимают существенный объём текста, UTF-8 даёт выигрыш по объёму в сравнении с UTF-16.

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

Универсальный онлайн декодер (переводчик кодировок)

Такой переводчик (сервис или программное обеспечение) еще называют как дешифратор, если Вам приходится работать с разными кодировками текста или возникли проблемы с кодировкой страниц в PHP (отображение в виде странной комбинации загадочных символов — «кракозябры»). Функциональный и универсальный сервис в режиме онлайн, автоматически поможет определить кодировку, покажет примеры всех комбинаций кодировок, чтобы вы могли выбрать подходящую и перевести текст из одной кодировки в другую. То есть универсальный декодер поможет перевести текст (предположим, что на кириллице) в другие международные форматы.

Чтобы воспользоваться переводчиком кодировок текста в режиме онлайн, просто перейдите по ссылке [ДЕКОДЕР] откроется в новом окне.

Данный декодер универсален, хотите закодировать текст для PHP или HTML страниц, а может быть в Java? Все проблемы кодировок решаются раскодировкой (перекодировкой) путем декодера, но способ кодирования зависит от формата документа в котором тот был закодирован и для этого необходимо сменить формат самого документа, а не изобретать новые способы интерпритации. В случае с серверами используйте их конфигурацию — онлайн переводчик кодировок поможет узнать какая именно кодировка используется в вашем случае — вставьте скопированные символы в окно декодера.

Статья UTF-8: Кодирование и декодирование

Dragokas

Very kind Developer

Причиной разобраться в том, как же работает UTF-8 и что такое Юникод заставил тот факт, что VBScript не имеет встроенных функций работы с UTF-8. А так как ничего рабочего не нашел, то пришлось писать/дописывать самому. Опыт на мой взгляд полезный в любом случае. Для лучшего понимания начну с теории.

До появления Юникода широко использовались 8-битные кодировки, главные минусы которых очевидны:

  • Всего 255 символов, да и то часть из них не графические;
  • Возможность открыть документ не с той кодировкой, в которой он был создан;
  • Шрифты необходимо создавать для каждой кодировки.

Так и было решено создать единый стандарт «широкой» кодировки, которая включала бы все символы (при чем сначала хотели в нее включить только обычные символы, но потом передумали и начали добавлять и экзотические). Юникод использует 1 112 064 кодовых позиций (больше чем 16 бит). Начало дублирует ASCII, а дальше остаток латиницы, кирилица, другие европейские и азиатские символы. Для обозначений символов используют шестнадцатеричную запись вида «U+xxxx» для первых 65k и с большим количеством цифр для остальных.

Когда-то я думал что есть Юникод, а есть UTF-8. Позже я узнал, что ошибался.
UTF-8 является лишь представлением Юникода в 8-битном виде. Символы с кодами меньше 128 представляются одним байтом, а так как в Юникоде они повторяют ASCII, то текст написанный только этими символами будет являться текстом в ASCII. Символы же с кодами от 128 кодируются 2-мя байтами, с кодами от 2048 — 3-мя, от 65536 — 4-мя. Так можно было бы и до 6-ти байт дойти, но кодировать ими уже ничего.

0x00000000 — 0x0000007F: 0xxxxxxx
0x00000080 — 0x000007FF: 110xxxxx 10xxxxxx
0x00000800 — 0x0000FFFF: 1110xxxx 10xxxxxx 10xxxxxx
0x00010000 — 0x001FFFFF: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

Кодируем в UTF-8

Порядок действий примерно такой:

  • Каждый символ превращаем в Юникод.
  • Проверяем из какого символ диапазона.
  • Если код символа меньше 128, то к результату добавляем его в неизменном виде.
  • Если код символа меньше 2048, то берем последние 6 бит и первые 5 бит кода символа. К первым 5 битам добавляем 0xC0 и получаем первый байт последовательности, а к последним 6 битам добавляем 0x80 и получаем второй байт. Конкатенируем и добавляем к результату.
  • Похожим образом можем продолжить и для больших кодов, но если символ за пределами U+FFFF придется иметь дело с UTF-16 суррогатами.

utf8_decode — Ошибка

(PHP 4, PHP 5, PHP 7)

utf8_decode — Преобразует строку с ISO-8859-1 символами кодированную в UTF-8 в однобайтную ISO-8859-1

Описание

Эта функция декодирует data , предположительно закодированные в UTF-8, в ISO-8859-1.

Список параметров

Строка закодированная в UTF-8.

Возвращаемые значения

Возвращает данные data , переведенные в ISO-8859-1.

Смотрите также

  • utf8_encode() — Кодирует строку ISO-8859-1 в кодировке UTF-8 (содержит описание UTF-8)

URL кодирование и декодирование строк

Для тех кто не любит нудных объяснений :)

Введите строку в одно из полей и нажмите соответствующую кнопку

Строка в закодированном виде

Строка в нормальном виде

Для тех кто любит «во всем разобраться» ;)

Кодирование URL и просто двоичных данных в последовательность букв, цифр и некоторых специальных знаков латинского алфавита в интернете было связано с ограничением физических устройств на передачу только алфавитно-цифровых символов. В URL такое кодирование обычно применяется для передачи символов в формате Unicode (как правило UTF-8) в последовательность из двух байт, записанных в шестнадцатиричном представлении. Каждый байт предваряется знаком %. При таком кодировании строчка «корова» будет иметь вид: %D0%BA%D0%BE%D1%80%D0%BE%D0%B2%D0%B0 . То есть русской букве к будет соответствовать последовательность %D0%BA и.т.д. Такое кодирование является общепринятым для путей к файлам или папкам, входящим в URL.

Подмножесто символов, которые разрешены в URL немного шире чем алфавитно-цифровые символы, так, в URL можно использовать дефис и подчеркивание, но нельзя, например, использовать одинарные или двойные кавычки. Некоторые символы используют для разделения параметров в URL, и их кодирование в этом случае будет неправомочным. В зависимости от отношения к кодированию специальных символов в javascript различают функции encodeURI и decodeURI, которые могут работать с полным URL, и, функции encodeURIComponent / decodeURIComponent, применяемые для параметров, входящих в URL.

Вообще говоря, кодирование параметров может быть достаточно произвольным. Здесь разработчик может использовать любую схему кодировки, если состав ее символов будет коректно передаваться через сеть. Так, вместо строки кириллицы в utf-8 можно применить строку в кодировке Windows 1251. В этом случае слово «корова» будет выглядеть как %EA%EE%F0%EE%E2%E0. То есть, символу к будет соответствовать последовательность из двух букв со знаком процента перед ними — %EA. Закодировать в строки с процентами кириллицу из других кодировок можно в нашем HTML кодировщике. В принципе, допустимы также другие способы кодирования, например, escape/unescape функцию javascript. Слово «корова» в этом случае будет выглядеть как %u043A%u043E%u0440%u043E%u0432%u0430 .

[Help] Преобразовать UTF-8 в unicode (html-код)

LightWood

Moderator

Всем привет.
Задача преобразовать переменную с текстом в html-код
Как я понимаю html-код (пример символов — это ) это разновидность юникода (пример символов — \u044d\u0442\u043).

Задача UTF-8 конвертнуть в html-код.
Если не получится конвертнуть в html-код, то просто в unicode тоже пойдет.

Перелопатил кучу вариантов. В результате либо иероглифы, либо текст в томже виде, что и подавал.

Хелп. Предполагаю, что что-то понимаю не так, поэтому копаю не туда.

Илон Маск рекомендует:  Деревья в sql
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL