sql >> Base de Datos >  >> RDS >> Mysql

Flujo de trabajo UTF8 PHP, MySQL resumido

  • mb_internal_encoding('UTF-8') no hace nada por sí mismo, solo establece el parámetro de codificación predeterminado para cada mb_ función. Si no estás usando ningún mb_ función, no hace ninguna diferencia. Si es así, tiene sentido configurarlo para que no tenga que pasar el $encoding parámetro cada vez individualmente.
  • OMI mb_detect_encoding es 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_encoding para 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_ci frente a utf8_bin solo marca la diferencia al cotejar , es decir, ordenar y comparar cadenas. Con utf8_bin los datos se tratan en forma binaria, es decir, solo los datos idénticos son idénticos. Con utf8_general_ci se aplica alguna lógica, p. "é" se ordena junto con "e" y las mayúsculas se consideran iguales a las minúsculas.