mb_convert_encoding

funkcja

Konwertuje ciąg znaków z jednego kodowania na inne (np. z ISO-8859-2 na UTF-8). Niezbędna przy pracy ze starszymi plikami i bazami danych.

mb_convert_encoding(array|string $string, string $to_encoding, array|string|null $from_encoding = null): array|string|false

mb_convert_encoding przelicza bajty ciągu z jednego kodowania na drugie. W polskich projektach najczęściej spotkasz się z konwersją ISO-8859-2 (Latin-2) lub Windows-1250 (CP1250) do UTF-8 — to dwa różne, historyczne kodowania (różnią się w zakresie 0x80–0x9F), np. przy imporcie starych plików CSV, danych z legacy bazy danych lub odpowiedzi z zewnętrznych API.

<?php
declare(strict_types=1);

// Stary plik w ISO-8859-2 — odczytujemy i konwertujemy do UTF-8
$zawartoscPliku = file_get_contents('/tmp/stary-plik.txt');
$utf8 = mb_convert_encoding($zawartoscPliku, 'UTF-8', 'ISO-8859-2');
echo $utf8; // wynik: tekst z polskimi znakami poprawnie wyświetlony

// Konwersja w drugą stronę (np. wysyłka mailem w starym formacie)
$iso = mb_convert_encoding('Zażółć gęślą jaźń', 'ISO-8859-2', 'UTF-8');

Jeśli nie znasz kodowania źródłowego, możesz spróbować automatycznego wykrycia podając tablicę możliwych kodowań jako trzeci argument: ['ISO-8859-2', 'Windows-1250', 'UTF-8']. Wykrycie nie jest w 100% pewne — gdy możesz, zawsze jawnie podawaj kodowanie źródłowe.

Zwraca false w razie błędu konwersji — warto sprawdzić wynik przed dalszym przetwarzaniem.

📘 Naucz się w lekcji →