mb_convert_encoding în PHP

Convertește un text dintr-o codare de caractere în alta, de exemplu din ISO-8859-16 în UTF-8.

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

Ce face mb_convert_encoding

Textul vechi sau exportat din alte programe poate fi salvat în altă codare decât UTF-8 (de exemplu ISO-8859-2 sau ISO-8859-16 pentru limba română). Afișat direct, apare cu semne ciudate în locul diacriticelor. mb_convert_encoding îl transformă în codarea dorită.

Indică mereu codarea sursă în $from_encoding. Caracterele care nu există în codarea țintă sunt înlocuite cu ?. Poți afla codările acceptate cu mb_list_encodings().

Parametri

Parametru Descriere
$string Textul (sau tabloul de texte) convertit.
$to_encoding Codarea în care se convertește, de exemplu "UTF-8".
$from_encoding Opțional, dar recomandat. Codarea actuală a textului.

Ce returnează

Textul convertit sau false la eroare.

Exemple

Exemplul 1: Din UTF-8 în ISO-8859-16 și înapoi

În ISO-8859-16 fiecare literă are un singur octet, de aceea textul devine mai scurt. Convertit înapoi, este identic cu originalul.

<?php
$utf8 = "Brașov, Iași";

$vechi = mb_convert_encoding($utf8, "ISO-8859-16", "UTF-8");
echo strlen($utf8) . " octeți în UTF-8, " . strlen($vechi) . " în ISO-8859-16\n";
echo mb_convert_encoding($vechi, "UTF-8", "ISO-8859-16");

Rezultat

14 octeți în UTF-8, 12 în ISO-8859-16
Brașov, Iași

Exemplul 2: Caractere care lipsesc din codarea țintă

ISO-8859-2 are doar varianta cu sedilă a literei s, nu și „ș” cu virgulă, așa că „ș” devine ?.

<?php
echo mb_convert_encoding("Brașov", "ISO-8859-2", "UTF-8");

Rezultat

Bra?ov

Greșeli frecvente

  • Nu dai $from_encoding și PHP presupune codarea internă (UTF-8). Textul care nu era UTF-8 este convertit greșit.
  • Convertești de două ori același text și diacriticele devin â sau similar. Convertește o singură dată și verifică întâi cu mb_check_encoding($text, "UTF-8").

Comenzi înrudite

  • mb_strlen: Returnează lungimea unui text în caractere, numărând corect literele cu diacritice.
  • htmlentities / html_entity_decode: Transformă în entități HTML toate caracterele care au o entitate (é devine &eacute;). html_entity_decode face operația inversă.
  • bin2hex / hex2bin: bin2hex transformă un text (sau date binare) în cifre hexazecimale, iar hex2bin face inversul.