Как работи URL кодирането
В адресите на сайтове са разрешени само малко символи: латински букви, цифри и няколко знака. Всичко останало се кодира. В UTF-8 буквата ж се състои от байтовете D0 и B6, затова се получава %D0%B6. Интервалът става %20, а във форми – +.
Кодирано
%D0%91%D0%B0%D0%BD%D0%B8%D1%86%D0%B0 %D0%B2 %D0%A1%D0%BE%D1%84%D0%B8%D1%8F
Декодирано
Баница в София
Най-честите URL кодове
%D0%B6= ж,%D0%96= Ж,%D1%89= щ,%D0%A9= Щ%D1%8A= ъ,%D1%8E= ю,%D1%8F= я,%D1%8C= ь%E2%82%AC= €,%E2%80%99= ’,%E2%80%93= –%20= интервал,%2F= /,%3F= ?,%26= &,%25= %
Българският текст се познава по началото на кодовете: почти всяка кирилска буква са два байта, %D0… или %D1…. Старите системи кодират буквите с един байт от Windows-1251: %D1%EE%F4%E8%FF вместо %D0%A1%D0%BE%D1%84%D0%B8%D1%8F. Mojibuster разпознава и такива кодове и връща София.
Откъде идва текстът с кодове
- Копирани връзки: браузърът показва
bg.wikipedia.org/wiki/София, но в клипборда често попада%D0%A1%D0%BE%D1%84%D0%B8%D1%8F. - Форми и етикети: заявките за търсене и UTM етикетите се пазят в сървърни логове и анализи в кодиран вид, например
?q=%D0%B1%D0%B0%D0%BD%D0%B8%D1%86%D0%B0. - Експорти и API: някои услуги за бюлетини, уебхукове и API пазят стойностите кодирани; тогава в CSV файла вместо имена стоят кодове.
- Имена на файлове: свален файл се казва
%D0%A4%D0%B0%D0%BA%D1%82%D1%83%D1%80%D0%B0.pdf, ако сървърът не е декодирал името.
Кодове и странни символи едновременно
Понякога текстът е повреден два пъти: %D0%A0%C2%B6 са кодирани странни символи Р¶, тоест ж, която първо е прочетена погрешно, а после кодирана. Mojibuster първо декодира кодовете, а след това поправя кодирането Windows-1251. Накрая отново излиза ж.
Опцията Преобразувай и кодове на тази страница вече е включена. Тя превръща и HTML кодове (ж), кодове от писма (=D0=B6) и екранирани последователности от програми (\u0436). Други грешки с букви: какво е mojibake.
Декодиране сами: Excel, JavaScript, Python и PHP
- Excel: има само функция за кодиране (
ENCODEURLв английската версия), но няма за декодиране. Най-лесно е да копирате колоната, да я поставите тук и да върнете резултата. Вижте и странни символи в Excel. - JavaScript:
decodeURIComponent('%D0%A1%D0%BE%D1%84%D0%B8%D1%8F')даваСофия. - Python:
urllib.parse.unquote('%D0%A1%D0%BE%D1%84%D0%B8%D1%8F'), а за данни от форми, където+е интервал,unquote_plus. - PHP:
rawurldecode()илиurldecode()за данни от форми.
Често задавани въпроси
Какво означава %D0%B6?
Това е ж в URL кодиране: двата UTF-8 байта D0 и B6, пред всеки от които има %. По същия начин %D1%8F е я, а %D1%89 е щ.
Какво означава %20?
Интервал. Във форми често вместо него стои +. Mojibuster оставя + както е: в обикновен текст това може да е истински плюс.
Качват ли се връзките ми на сървър?
Не. Преобразуването се извършва изцяло във вашия браузър. Връзки с токени, имейл адреси и други лични данни не напускат устройството ви.
Защо 100% не се променя?
Mojibuster преобразува само последователности, от които излиза истински символ. 100%, 50 % или самотно %20 в обикновен текст остават както са.