Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Acentos cambiados por interrogaciones

Estas en el tema de Acentos cambiados por interrogaciones en el foro de Mysql en Foros del Web. Hola a todos: disculpad por loreiterado del tema pero estoy desesperado. Necesito saber como evitar la aparición de signos de interrogación en las palabras con ...
  #1 (permalink)  
Antiguo 21/12/2008, 10:39
 
Fecha de Ingreso: junio-2008
Ubicación: Valencia (España)
Mensajes: 132
Antigüedad: 15 años, 10 meses
Puntos: 1
Acentos cambiados por interrogaciones

Hola a todos: disculpad por loreiterado del tema pero estoy desesperado. Necesito saber como evitar la aparición de signos de interrogación en las palabras con acento en mis bases de datos.

Os explico cómo subo mis bases de datos a la web: creo la base de datos en una hoja de cálculo y las archivo como CSV asegurándome que aparece como Unicode (UTF-8). Después voy a Mysql y le doy a importar tomando el fichero y en "juego de caracteres" pongo UTF-8.

En principio, en la base de datos veo los signos de forma correcta por lo que se podría entender que la importación es correcta. El problema es que al hacer una consulta sobre un fichero php al que le hago asumir esos caracteres:

<?php

session_start( );

$respuesta=0;

include("funejercicios.php");

?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" >

<link rel="stylesheet" href="../estilogeneral.css" type="text/css">

En este momento no aparecen correctamente las palabras acentuadas sino que aparecen los signos de interrogación. ¿Alguien me podría decir dónde esto metiendo la pata? Disculpad si no soy muy técnico en mis expresiones pero no tengo mucha experiencia con PHP y MySQL.

Gracias a todos.
  #2 (permalink)  
Antiguo 21/12/2008, 11:42
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Acentos cambiados por interrogaciones

Creo que te faltan dos cosas:
1) Tras hacer la conexión con
mysql_select_db(db_name);
escribe esto:
mysql_query("SET NAMES 'UTF8'");
Eso hará que el servidor sepa qué codificación recibirá y en qué codificación la recibirá.

2) Si no usas sesiones, con eso debería bastar, pero cuando se emplean sesiones, la codificación del archivo que muestra los datos no puede ser utf-8 sin más, pues al menos en windows introduce una marca BOM; tienes que evitar eso, ya que ninguna sesión se iniciará con un caracter antes del session_start() y los header. Por eso deberás codificar el archivo (guardarlo como... con el formato) como ANSI mostrando UTF-8 sin BOM (eso es lo que yo hago en mi editor). Tu editor de texto te dará esa posibilidad, imagino.
  #3 (permalink)  
Antiguo 21/12/2008, 12:16
 
Fecha de Ingreso: junio-2008
Ubicación: Valencia (España)
Mensajes: 132
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Acentos cambiados por interrogaciones

Cita:
Iniciado por jurena Ver Mensaje
Creo que te faltan dos cosas:
1) Tras hacer la conexión con
mysql_select_db(db_name);
escribe esto:
mysql_query("SET NAMES 'UTF8'");
Eso hará que el servidor sepa qué codificación recibirá y en qué codificación la recibirá.

2) Si no usas sesiones, con eso debería bastar, pero cuando se emplean sesiones, la codificación del archivo que muestra los datos no puede ser utf-8 sin más, pues al menos en windows introduce una marca BOM; tienes que evitar eso, ya que ninguna sesión se iniciará con un caracter antes del session_start() y los header. Por eso deberás codificar el archivo (guardarlo como... con el formato) como ANSI mostrando UTF-8 sin BOM (eso es lo que yo hago en mi editor). Tu editor de texto te dará esa posibilidad, imagino.


Por favor, aclárame esto último. ¿Quieres decir que guarde la base de datos como ANSI? Yo utilizo openoffice para editar las bases de datos entonces ¿Quieres decir que las guarde como "Europa occidental (ASCI/EEUU)"? ¿Qué codificación utilizo? y luego ¿Cómo se verá en UTF-8?

¿Que es una marca BOM?

Como os decía antes mis conocimientos son "ajustados". Gracias
  #4 (permalink)  
Antiguo 22/12/2008, 03:16
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Acentos cambiados por interrogaciones

dos cosas antes que nada. No te preocupes por BOM en tanto no te dé problemas con las sesiones. Pero si te empeñas en saber lo que es BOM, mira este enlace:
http://en.wikipedia.org/wiki/Byte_Order_Mark

A mí lo que me preocupa ahora es seguir los pasos que tú has seguido. Me explico. He creado un documento con oppenoffice.org calc (imagino que lo que tú has hecho), he escrito con caracteres UTF-8, concretamente en griego antiguo, y he exportado guardando como CSV y elegiendo la codificación UNICODE (UTF-8). Luego he creado una base MySQL con codificación utf-8 y con collation utf8_unicode_ci (por eso del griego antiguo). Finalmente, he importado desde esa base el archivo CSV, eligiendo para la importación desde PHPMyAdmin la codificación UTF-8 y el formato CSV, y no he tenido problemas.

¿Cómo lo estás haciendo tú?

Última edición por jurena; 22/12/2008 a las 05:24
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:06.