Despues de darme muchos coscorrones y empezar a pensar que «hola mundo» en php no es igual a «hola mundo» descubro que el UTF8 me estaba haciendo de las suyas.
Bueno explico de que va el tema suelo usar eclipse como SDK para desarrollar con PHP lo tengo puesto para que el workspace trabaje con UTF8 siempre, y de forma habitual me despreocupo de estas jugaretas, el caso es que estaba
haciendo un programilla algo sencillo que saque texto de una BD lo meta en un array y luego compare con ciertas palabras que no me gusta y me de un listado, vamos un generador de metakey automatico, pero en plan sencillo.
Bien pues mi sorpresea llego cuando me llegaba la palabra también con su tilde como no me gusta que sea un palabra clave de mi sitio la meto en el array de palabras denegadas y al compararlo seguia saliendo.Le pase mi funcion de quitar tildes que podeis encontrar en un articulo anterior y nada de nada, asi que ya me puse a investigar si era problema de codificacion no sin antes darme durante 20 minutos con la cabeza en la mesa jeje.
Pues para convertir una varible a formato utf8 podemos usar
$variable = utf8_encode($variable); Aqui al compararlo empezo a trabajar bien.
Asi que investigue un poquito mas esta es la forma para que todo nuestro software funcione con utf8
header (‘Content-type: text/html; charset=utf-8’);
Si queremos añadirlo por defecto a nuestro apache.
vi /etc/httpd/conf/httpd.conf
y añadimos o modificamos esta linea
AddDefaultCharset UTF-8
Debemos reiniciar Apache
Y la otra opcion es por php.ini
vi /etc/php.ini
default_mimetype = «text/html»
default_charset = «utf-8»
Si queremos para HTML
Dentro de la etiqueta head
<head> </head>
habría que incluir la siguiente etiqueta con la codificación del documento html.
En HTML5 se especifica la etiqueta
<meta charset=»UTF-8″>
En HTML 4 se usa la etiqueta
<meta http-equiv=»Content-type» content=»text/html;charset=UTF-8″>
Para un documento XML se utiliza la siguiente etiqueta
<?xml version=»1.0″ encoding=»UTF-8″?>