METAMORFOSIS CARACTERIOLÓGICA UTF-ISO
A veces podemos sentir la imperiosa necesidad de jugar con la codificación de caracteres, cierto, pero en la mayoría de las ocasiones, y si se es programador más si cabe, nos veremos impelidos a actuar so pena de abroncamiento o melancolía.
Dicho lo cual, ¿cuál es el verdadero problema? Fácil. Todo va estupendamente pero, ay, ese dichoso combo nos muestra (reacio a nuestras indicaciones) una serie de nombres con signos muy raros que hacen peligrar la elegancia de lo que el usuario esté visualizando en ese preciso instante.
Fuera barroquismos y vayamos al barro del asunto.
PHP, el lenguaje de script más potente del mercado, nos facilita dos funciones que podremos adaptar perfectamente a nuestras necesidades. Tan sencillo como lo siguiente.
1) FUNCIÓN BASE
Nos detecta si estamos en presencia de un críptico UTF-8
function is_utf8($string) {
return preg_match(´%^(?:
[x09x0Ax0Dx20-x7E] # ASCII
| [xC2-xDF][x80-xBF] # non-overlong 2-byte
| xE0[xA0-xBF][x80-xBF] # excluding overlongs
| [xE1-xECxEExEF][x80-xBF]{2} # straight 3-byte
| xED[x80-x9F][x80-xBF] # excluding surrogates
| xF0[x90-xBF][x80-xBF]{2} # planes 1-3
| [xF1-xF3][x80-xBF]{3} # planes 4-15
| xF4[x80-x8F][x80-xBF]{2} # plane 16
)*$%xs´,
$string);
}
2) FUNCIÓN DE UTF A ISO
Esta pulcra función genera el string en ISO-8859-1, operando la transubstanciación de una cadena que realmente utiliza ISO pero que contiene caracteres codificados con UTF.
La función PHP es (el señor cantó línea) -> [utf8_decode ($string)]
// FUNCIÓN DE UTF8 A ISO
function UTF8toISO($string){
if(!is_utf8($string)){
return $string;
}else{
return utf8_decode($string);
}
}
3) FUNCIÓN DE ISO A UTF
Al revés o viceversa.
La función PHP es (pero la señora bingo) -> [utf8_encode ($string)]
// FUNCIÓN DE ISO A UTF8
function ISOtoUTF8($string){
if(is_utf8($string)){
return $string;
}else{
return utf8_encode($string);
}
}
Y lo mejor de todo es que funciona. De nada.
Autor: Adrián Martínez Buleo
Esta web se reserva el derecho de suprimir, por cualquier razón y sin previo aviso, cualquier contenido generado en los espacios de participación en caso de que los mensajes incluyan insultos, mensajes racistas, sexistas... Tampoco se permitirán los ataques personales ni los comentarios que insistan en boicotear la labor informativa de la web, ni todos aquellos mensajes no relacionados con la noticia que se esté comentando. De no respetarse estas mínimas normas de participación este medio se verá obligado a prescindir de este foro, lamentándolo sinceramente por todos cuantos intervienen y hacen en todo momento un uso absolutamente cívico y respetuoso de la libertad de expresión.
#2
CorrecciOscar el 5 mar 2010 |
Atención, sin esta pequeña corrección , la función no se comporta adecuadamente... Hay que cambiar las comillas que aparecen en cursiva , por comillas verticales (las que aparecen debajo del signo ? en nuestro teclado) Saludos |
#1
problemas con el charsetRa el 8 feb 2010 |
Las problemas con las diferentes codificaciones y mala visualización de los juegos de carateres es algo con lo que más de una vez nos hemos encontrado todos. Complementando a este artículo os propongo ehcar un vistazo a este otro : UTF-8 o ISO-8859-1problemas con el charset en PHP |