mb_internal_encoding('UTF-8')no hace nada por sí mismo, solo establece el parámetro de codificación predeterminado para cadamb_función. Si no estás usando ningúnmb_función, no hace ninguna diferencia. Si es así, tiene sentido configurarlo para que no tenga que pasar el$encodingparámetro cada vez individualmente.- OMI
mb_detect_encodinges en su mayoría inútil ya que es fundamentalmente imposible detectar con precisión la codificación de texto desconocido. Debe saber en qué codificación se encuentra un blob de texto porque tiene una especificación al respecto, o necesita analizar metadatos apropiados como encabezados o metaetiquetas donde se especifica la codificación. - Utilizando
mb_check_encodingpara verificar si una gota de texto es válida en la codificación en la que espera que esté, generalmente es suficiente. Si no es así, deséchelo y arroje un error apropiado. -
Con respecto a:
Si está manipulando cadenas que contienen caracteres multibyte, entonces sí, necesita usar
mb_funciones para evitar obtener resultados erróneos. Las funciones principales de cadena solo funcionan a nivel de byte, no a nivel de carácter, que es lo que normalmente desea cuando trabaja con cadenas. utf8_general_cifrente autf8_binsolo marca la diferencia al cotejar , es decir, ordenar y comparar cadenas. Conutf8_binlos datos se tratan en forma binaria, es decir, solo los datos idénticos son idénticos. Conutf8_general_cise aplica alguna lógica, p. "é" se ordena junto con "e" y las mayúsculas se consideran iguales a las minúsculas.