Si tienes problemas de codificación de caracteres, tienes que cambiar toda la codificación de caracteres de apache, php, mysql, html:
En apache:
[httpd.conf]
AddDefaultCharset utf-8
en algunas versiones de apache no se encuentra AddDefaultCharset en el lugar habitual y tienes que buscar $cfg['DefaultCharset'] = ''; en toda la instalacion o variables similares y cambiarla por
$cfg['DefaultCharset'] = 'utf-8'; En php:
[php.ini]
default_charset = "utf-8"
mbstring.internal_encoding=utf-8
mbstring.http_output=UTF-8
mbstring.encoding_translation=On
mbstring.func_overload=0
Si estas usando una versión superior o igual a php 5.6 estos parametros estan obsoletos:
mbstring.internal_encoding
mbstring.http_input
mbstring.http_output
y basta con poner default_charset = "utf-8"
Si usas
mysql toda la collation de Base de datos y tablas debe ser
utf8 - utf8_spanish_ci y en la conexión:
Código PHP:
Ver original$Conex=new mysqli(.....);
$Conex->set_charset("utf8");
Por ultimo tus html debe tambien configurar el utf8 con la siguiente linea:
Código PHP:
Ver original<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Esto funcionara perfectamente en linux pero si usas windows y tratas de escribir archivos a disco veras que no funciona (porque windows usa otra codificacion). Es entonces cuando hay que recurrir al gran repertorio de funciones que tiene PHP para codificación de caracteres, en este caso iconv. Ejemplo: al escribir en disco;
ó al leer de disco;