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 cumb_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 é). html_entity_decode face operația inversă.bin2hex / hex2bin: bin2hex transformă un text (sau date binare) în cifre hexazecimale, iar hex2bin face inversul.