Me gustaría detectar la codificación de algunos textos (usando PHP). Para ese propósito, uso la función mb_detect_encoding().Extraño comportamiento de mb_detect_order() en PHP
El problema es que la función devuelve resultados diferentes si cambio el orden de posibles codificaciones con la función mb_detect_order().
Considere el siguiente ejemplo
$html = <<< STR
ちょっとのアクセスで落ちてしまったり、サーバー障害が多いレンタルサーバーを選ぶとあなたのビジネス等にかなりの影響がでてしまう可能性があります。特に商売をされている個人の方、法人の方は気をつけるようにしてください
STR;
mb_detect_order(array('UTF-8','EUC-JP', 'SJIS', 'eucJP-win', 'SJIS-win', 'JIS', 'ISO-2022-JP','ISO-8859-1','ISO-8859-2'));
$originalEncoding = mb_detect_encoding($str);
die($originalEncoding); // $originalEncoding = 'UTF-8'
Sin embargo, si se cambia el orden de las codificaciones en mb_detect_order() los resultados serán diferentes:
mb_detect_order(array('EUC-JP','UTF-8', 'SJIS', 'eucJP-win', 'SJIS-win', 'JIS', 'ISO-2022-JP','ISO-8859-1','ISO-8859-2'));
die($originalEncoding); // $originalEncoding = 'EUC-JP'
Así que mis preguntas son:
¿Por qué está sucediendo eso?
¿Hay alguna forma en PHP para detectar correctamente y sin ambigüedades la codificación de texto?
muchas gracias! – Termos