mb_internal_encoding în PHP

Setează sau returnează codarea implicită folosită de funcțiile mb_ când nu primesc parametrul $encoding.

Sintaxă
mb_internal_encoding(?string $encoding = null): string|bool

Ce face mb_internal_encoding

Toate funcțiile mb_ au un parametru opțional $encoding. Când lipsește, se folosește codarea internă, pe care o citești sau o schimbi cu mb_internal_encoding.

În PHP 8 valoarea implicită vine din default_charset, adică UTF-8, deci de obicei nu trebuie schimbată. Fără parametru, funcția returnează codarea curentă; cu parametru, o setează și returnează true (sau aruncă ValueError pentru o codare necunoscută).

Parametri

Parametru Descriere
$encoding Opțional. Codarea nouă, de exemplu "UTF-8".

Ce returnează

Codarea curentă (fără parametru) sau true după setare.

Exemple

Exemplul 1: Citire și schimbare

În ISO-8859-1 fiecare octet este un caracter, deci litera „ș” (2 octeți în UTF-8) este numărată de două ori.

<?php
echo mb_internal_encoding() . "\n";
echo mb_strlen("Iași") . "\n";

mb_internal_encoding("ISO-8859-1");
echo mb_strlen("Iași") . "\n";

mb_internal_encoding("UTF-8");

Rezultat

UTF-8
4
5

Greșeli frecvente

  • Schimbi codarea internă într-un fișier inclus și toate funcțiile mb_ din restul aplicației încep să numere greșit diacriticele. Dă mai bine $encoding explicit doar unde ai nevoie.

Comenzi înrudite

  • mb_strlen: Returnează lungimea unui text în caractere, numărând corect literele cu diacritice.
  • mb_convert_encoding: Convertește un text dintr-o codare de caractere în alta, de exemplu din ISO-8859-16 în UTF-8.
  • mb_get_info: Returnează setările interne ale extensiei mbstring: codarea internă, limba, ordinea de detectare etc.