La valeur de retour obtenue en utilisant mb_detect_encoding est cp936. Cela correspond-il à GBK ?
Après le transcodage via mb_convert_encoding, bien que le texte soit affiché normalement, lors de l'utilisation de mb_detect_encoding pour détecter le format d'encodage du texte, il s'agit toujours de cp936 et n'a pas changé. Pourquoi cela ?
Le code est le suivant :
$file_contents = fread($file,$fileSize);
$typeofData = mb_detect_encoding($file_contents,array("GBK","GB2312","UTF-8","ASCII","BIG5"));
if ($typeofData != "UTF-8"){
// $file_contents = iconv("GBK","UTF-8",$file_contents);
$file_contents = mb_convert_encoding($file_contents,"UTF-8","GBK");
}
echo mb_detect_encoding($file_contents,array("GBK","GB2312","UTF-8","ASCII","BIG5"))."<br/>";
echo $file_contents;
La page de codes de GBK est CP936.
.Je l'ai essayée avec PHP5 et PHP7 sur Ubuntu Après la conversion en codage UTF-8, UTF-8 peut être détecté :