User Tag List

Resultados 1 al 5 de 5

Tema: Problemas con codificaciones en PHP

  1. #1

    Fecha de ingreso
    Mar 2008
    Ubicación
    Aquí
    Mensajes
    2,205
    Mencionado
    0 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    0
    Agradecer Thanks Received 
    0
    Thanked in
    Agradecido 0 veces en [ARG:2 UNDEFINED] posts
    Entradas de blog
    15

    Problemas con codificaciones en PHP

    Buenas,

    Tengo un nuevo proyectillo al cual hay que hacer varias modificaciones.

    Mi sorpresa ha sido al montarlo y descubrir que cada fichero está codificado con UTF-8 sin Boom (bien) o ANSI (noooooo).

    Aparte de PHP tiene unos ficheros en la carpeta locale que usa la biblioteca para idiomas .po, los cuales están codificados en UTF-8 sin Boom.

    Me gustaría probar a unificar todo en UTF-8 sin Boom para evitarme problemas y se que hay comandos en GNU-Linux para hacer algo así. Esas conversiones las quiero hacer por supuesto sin tener que reescribir las tildes y demás historias...

    ¿Alguien sabe como va el tema de convertir automaticamente mediante comando? ¿Alguna recomendación?

    La cuestión ademas es que en real las codificaciones se ven bien, pero en desarrollo no consigo forzar que cargue como ISO y evidentemente se ve mal..
    < - >
    Bueno, he encontrado un programa que lo hace

    http://php.net/manual/en/function.utf8-encode.php
    (Buscad Julio Cesar 20-Jan-2009 01:08)

    Ahora tendría que hacer lo mismo con la BBDD que está en latin1 sueco!!!!!!! (Salvo una tabla que está en UTF-8....)
    Última edición por Bizkaitarra; 27/01/2011 a las 11:24 Razón: Edición automática anti doble-post.

  2. #2

    Fecha de ingreso
    Mar 2007
    Ubicación
    Barna
    Mensajes
    10,612
    Mencionado
    94 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    469
    Agradecer Thanks Received 
    2,101
    Thanked in
    Agradecido 1,106 veces en [ARG:2 UNDEFINED] posts
    Aunque ya lo hayas solucionado, por completitud el programa de línea de comandos que se usa para cambiar la codificación es "recode" ó "iconv".

    Yo tengo un script "i2u" con iconv que crea la típica copia de seguridad y luego realiza la conversión. Simplificado:

    Código:
    mv "$1" "$1~"
    iconv --from-code=ISO8859-1 --to-code=UTF-8 "$1~" -o "$1"
    También tengo el correspondiente u2i Lo mismo se puede hacer con recode.

    Por cierto, ¿qué es Boom? ¿Lo que sucede cuando metes una room en una Caanon?

  3. #3

    Fecha de ingreso
    Mar 2008
    Ubicación
    Aquí
    Mensajes
    2,205
    Mencionado
    0 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    0
    Agradecer Thanks Received 
    0
    Thanked in
    Agradecido 0 veces en [ARG:2 UNDEFINED] posts
    Entradas de blog
    15
    Cita Iniciado por juanvvc Ver mensaje
    Aunque ya lo hayas solucionado, por completitud el programa de línea de comandos que se usa para cambiar la codificación es "recode" ó "iconv".

    Yo tengo un script "i2u" con iconv que crea la típica copia de seguridad y luego realiza la conversión. Simplificado:

    Código:
    mv "$1" "$1~"
    iconv --from-code=ISO8859-1 --to-code=UTF-8 "$1~" -o "$1"
    También tengo el correspondiente u2i Lo mismo se puede hacer con recode.

    Por cierto, ¿qué es Boom? ¿Lo que sucede cuando metes una room en una Caanon?
    Es con una o, lo que puesto mal
    En Notepad++ diferencia entre Bom y sin Bom. Creo que es una serie de info sobre el fichero que está oculta pero que te fastidia si quieres poner headers con php por que cuenta como caracter...
    http://es.wikipedia.org/wiki/Marca_d...ytes_%28BOM%29
    < - >
    Y por cierto, sigo con el problema de Mysql
    < - >
    Parece que con:
    Código:
    ALTER TABLE `mitabla` DEFAULT CHARACTER SET utf8 COLLATE utf8_spanish_ci;
    Se soluciona
    Última edición por Bizkaitarra; 27/01/2011 a las 12:22 Razón: Edición automática anti doble-post.

  4. #4

    Fecha de ingreso
    Nov 2005
    Ubicación
    Madrid
    Mensajes
    4,182
    Mencionado
    16 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    56
    Agradecer Thanks Received 
    255
    Thanked in
    Agradecido 155 veces en [ARG:2 UNDEFINED] posts
    Si quieres tener la aplicación en utf-8 sin tener problemas yo lo que hago es:

    En la clase donde hago la conexión a base de datos añado justo después de la conexión:
    mysql_query("SET NAMES 'utf8'");

    El header global mediante php:
    header('Content-Type: text/html; charset=UTF-8');

    Y un meta en el <head> del html así:
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

    Y las tablas de mysql que estén en utf-8 también claro!

    Así he conseguido que en todos los tipos de configuración de servidor que he probado se fuerce la codificación a utf-8. A veces el servidor tiene una configuración por defecto, el apache otra, y mysql otra, así te evitas también problemas al migrar

    Sobre convertir de forma automática ficheros ya habéis contestado ^^

  5. #5

    Fecha de ingreso
    Mar 2008
    Ubicación
    Aquí
    Mensajes
    2,205
    Mencionado
    0 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    0
    Agradecer Thanks Received 
    0
    Thanked in
    Agradecido 0 veces en [ARG:2 UNDEFINED] posts
    Entradas de blog
    15
    A tus apuntes añado que hay que poner también el enconding que quieres usar para el fichero de idiomas usando lo de gettext:

    Código:
    // Set language to Spanish 
    //setlocale(LC_ALL, 'es_ES'); // es_ES not in the server 
    setlocale(LC_MESSAGES, 'es_ES.utf8'); 
    // run ok with LC_MESSAGES 
     
    // Specify location of translation tables 
    bindtextdomain("myAppPhp", "includes/locale"); 
    bind_textdomain_codeset("myAppPhp", 'UTF-8');
    A proposito de lo de la librería de gettext... me pasan cosas extrañas como el que no me obtenga correctamente los literales que voy cambiando, que no se muestran los cambios


    Bueno, sigo aportando info

    Parece que Gettext se cachea y no recoge nuevos cambios hasta reiniar Apache. No obstante, hay opción de evitar esto y en ello estoy, probandolo

    Bueno, parece que funciona. Por lo menos me ha echo parte de las cosas...

    La solución
    Última edición por Bizkaitarra; 27/01/2011 a las 17:21

Etiquetas para este tema

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •