Kodowanie znaków
Reguły zamiany znaków na bajty i z powrotem, a zarazem powód, dla którego zamiast „ł” widzisz „Å‚”.
Kodowanie to odwzorowanie między znakami zbioru znaków a ciągami bajtów. ASCII wyrobiło się w 128 znakach na siedmiu bitach. ISO-8859-1 (Latin-1) rozszerzyło to do 256, co starczyło dla języków Europy Zachodniej i na niewiele więcej, a w efekcie powstał rój niezgodnych stron kodowych (dla polskiego choćby ISO-8859-2 i Windows-1250). Unicode naprawił zbiór znaków, UTF-8 naprawił kodowanie.
Kluczowa obserwacja: tekst w pamięci nigdy nie jest „po prostu tekstem”, to zawsze bajty plus założenie co do kodowania. Gdy założenie jest błędne, dostajesz mojibake, czyli krzaczki. Dlatego kodowanie należy zawsze deklarować jawnie: w nagłówku HTTP, w <meta charset>, w połączeniu z bazą danych.