4 votes

Encodage par défaut des chaînes de caractères en PHP

Quelqu'un pourrait-il expliquer pourquoi la sortie est ASCII dans les trois derniers tests ci-dessous ?

J'obtiens les mêmes résultats sur mon propre système, PHPTester.net et PhpFiddle.org .

echo mb_internal_encoding();                       // UTF-8

$str = 'foobar';
echo mb_check_encoding($str, 'UTF-8');             // true
echo mb_detect_encoding($str);                     // ASCII

$encoded = utf8_encode($str);
echo mb_detect_encoding($encoded);                 // ASCII

$converted = mb_convert_encoding($str, 'UTF-8');
echo mb_detect_encoding($converted);               // ASCII

5voto

Niet the Dark Absol Points 154811

C'est parce qu'il n'y a pas de personnages dans foobar qui ne peuvent pas être représentées en ASCII.

mb_check_encoding($str, 'UTF-8') fonctionne parce que le texte ASCII est intrinsèquement compatible avec UTF-8 (délibérément)

Mais en l'absence de caractères à plusieurs octets, il n'y a pas de différence perceptible entre les deux. La preuve : 'foobar' === utf8_encode('foobar') // true

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X