Detectando UTF8 en PHP
Enviado por clbustos el 27 Diciembre, 2005 - 3:53am.
Clasificado en: PHP | Programación
No resistí la tentación de hacer lo mismo que hice en Detectando UTF-8 en Ruby, pero en PHP. El resultado es el siguiente:
- define("UTF_8", 1);
- define("ASCII", 2);
- define("ISO_8859_1", 3);
- function codificacion($texto)
- {
- $c = 0;
- $ascii = true;
- for ($i = 0;$i<strlen($texto);$i++) {
- $byte = ord($texto[$i]);
- if ($c>0) {
- if (($byte>>6) != 0x2) {
- return ISO_8859_1;
- } else {
- $c--;
- }
- } elseif ($byte&0x80) {
- $ascii = false;
- if (($byte>>5) == 0x6) {
- $c = 1;
- } elseif (($byte>>4) == 0xE) {
- $c = 2;
- } elseif (($byte>>3) == 0x14) {
- $c = 3;
- } else {
- return ISO_8859_1;
- }
- }
- }
- return ($ascii) ? ASCII : UTF_8;
- }
- function utf8_encode_seguro($texto)
- {
- return (codificacion($texto)==ISO_8859_1) ? utf8_encode($texto) : $texto;
- }
Lo pueden probar con
- $a="Ascii";
- $b="ISO-8859-1: áéíóú";
- $c=utf8_encode($b);
- echo utf8_encode_seguro($a)."\n";
- echo utf8_encode_seguro($b)."\n";
- echo utf8_encode_seguro($c)."\n";
Si me da el ánimo, haré lo mismo en C. No creo que sea nada tan terrible...
Páginas relacionadas:
- ¿Que onda con UTF-8? Sets de caracteres, la web y Ajax
- Detectando UTF8 en C
- Detectando UTF8 en ruby
- Resolución del error en el algoritmo de detección de UTF-8
- Código para aguayoki....
- Como borrar múltiples registros con checkbox
- Curso de PHP II
- Curso de PHP III
- Curso de PHP VI. De Plantillas y demases, parte 1: el enfoque KISS
- Curso de PHP VI. De Plantillas y demases, parte 2: plantilla HTML_Template_IT
- Ejemplo de uso de Xpath
- Error en el algoritmo de detección de UTF-8.... ¿cúal será?
- Función para validar RUT
- Insertando datos en la base de datos usando campos de texto y checkbox
- Manual de PHP y Oracle, para usuarios LAMP
- Otra para validar RUT
- PHP e IIS 6.0: Si te aparece "Document not found"
- Php y Oracle
- Php y Oracle II
- Redimensionando imágenes en php o como crear thumbnails
- Redireccionador
1470 lecturas
Comentarios recientes
hace 1 día 12 horas
hace 1 día 23 horas
hace 2 días 9 horas
hace 2 días 13 horas
hace 3 días 7 horas
hace 5 días 14 horas
hace 5 días 14 horas
hace 6 días 4 horas
hace 6 días 18 horas
hace 1 semana 13 horas