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

Problema de codificación de caracteres con PHP Simple HTML DOM Parser

@deceze y @Shakti gracias por su ayuda.

+1 por el enlace del artículo publicado por deceze (Manejo de Unicode de adelante hacia atrás en una aplicación web ) y también vale la pena leer Entender la codificación

Después de leer sus comentarios, su respuesta y, por supuesto, esos dos artículos, finalmente resolví mi problema.

He enumerado los pasos que hice hasta ahora para resolver este problema:

  1. Se agregó header('Content-Type: text/html; charset=utf-8'); en la parte superior de mi archivo init.php,
  2. Cambió el CONJUNTO DE CARACTERES del campo de la tabla de mi base de datos que almacena esos valores en UTF-8,
  3. Establezca el juego de caracteres de conexión de MySQL en UTF-8 mysql_set_charset('utf8', $connection_link_id);
  4. Utilizó la función htmlentities() para convertir caracteres $meta_title = htmlentities(trim($meta_title_raw), ENT_QUOTES, 'UTF-8');

Ahora el problema parece estar resuelto, PERO todavía tengo que hacer lo siguiente para resolver este problema por COMPLETO.

  1. Obtenga el juego de caracteres codificado de la fuente $source_charset .
  2. Cambie la codificación de la cadena a UTF-8 si ya no está en la misma codificación. Para esto, la única función PHP disponible es iconv() . Ejemplo:iconv($source_charset, "UTF-8", $meta_title_raw);

Para obtener $source_charset Probablemente tenga que usar algunos trucos o comprobaciones múltiples. Como verificar encabezados y metaetiquetas, etc. Encontré una buena respuesta en Detectar codificación

Avíseme si hay alguna mejora o alguna falla en mis pasos anteriores.