Ver Mensaje Individual
  #4 (permalink)  
Antiguo 23/06/2007, 02:29
Sanva
 
Fecha de Ingreso: diciembre-2005
Ubicación: Redondela (Galicia)
Mensajes: 368
Antigüedad: 18 años, 5 meses
Puntos: 1
Información Re: Evitar doble conversión a UTF-8

Bueno, posteo yo mismo la solución por si a alguien le sirve

Código PHP:
function is_utf8($string) {
    
// From http://w3.org/International/questions/qa-forms-utf-8.html
    
return preg_match('%^(?:
          [\x09\x0A\x0D\x20-\x7E]            # ASCII
        | [\xC2-\xDF][\x80-\xBF]             # non-overlong 2-byte
        |  \xE0[\xA0-\xBF][\x80-\xBF]        # excluding overlongs
        | [\xE1-\xEC\xEE\xEF][\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);

Esa función comprobará si la cadena que se le pasa como argumento está en UTF-8 o no.

La encontré en los comentarios de la función mb_detect_encoding
en http://es.php.net/manual/es/function...t-encoding.php. Al parecer es una traducción a PHP de la misma función propuesta por el W3C aquí: http://w3.org/International/question...rms-utf-8.html