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

Cotejamiento Utf8 Latin1

Estas en el tema de Cotejamiento Utf8 Latin1 en el foro de Mysql en Foros del Web. Hola a todos. Tengo una duda sobre PHP y MySQL Es sobre el tema del cotejamiento. utf8 o latin1 he diseñado una BD con mysql ...
  #1 (permalink)  
Antiguo 19/06/2009, 13:20
 
Fecha de Ingreso: octubre-2007
Mensajes: 57
Antigüedad: 16 años, 6 meses
Puntos: 0
Pregunta Cotejamiento Utf8 Latin1

Hola a todos.

Tengo una duda sobre PHP y MySQL
Es sobre el tema del cotejamiento. utf8 o latin1

he diseñado una BD con mysql worbench llamada libreria.

-indicando como cotejamiento latin1_general_ci a la bd y a todas las tablas e importando el script en phpmyadmin con el juego de caracteres latin1. notengo problemas al ingresar datos en la BD con ñ y con acentos desde un formulario creado y procesado por php, eso si el caracter € no me lo introduce.

-indicando como cotejamiento utf8_general_ci a la bd y a todas las tablas e importando el script en phpmyadmin con el juego de caracteres utf8. no puedo ingresar datos en la BD con ñ y con acentos desde el formulario html creado y procesado por un archivo php. y si creo un usuario para conectar indicando que pueda conectarse desde cualquier host % no me deja conectarme, solo me deja si creo el usuario indicando que se tiene que conectar desde el localhost...eso con latin1 no me pasa.

Además en las paginas si pongo

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
me muestra los acentos y caracteres como la ñ bien en el texto

pero si pongo

<meta http-equiv="Content-Type" content="text/html; charset=utf8" />
No me los muestra bien esos caracteres en la pagina.
Me he fijado en codigos fuente de webs que no hay ese problema.

archivos

libreriaBD.sql
Código PHP:
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKSUNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKSFOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODESQL_MODE='TRADITIONAL';

CREATE SCHEMA IF NOT EXISTS `libreria` DEFAULT CHARACTER SET latin1 COLLATE latin1_general_ci ;
USE `
libreria`;

-- -----------------------------------------------------
-- 
Table `libreria`.`clientes`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `libreria`.`clientes` (
  `
clienteIDINT UNSIGNED NOT NULL AUTO_INCREMENT ,
  `
nombreVARCHAR(20NOT NULL ,
  `
direccionVARCHAR(45NOT NULL ,
  `
ciudadVARCHAR(40NOT NULL ,
  
PRIMARY KEY (`clienteID`) )
ENGINE InnoDB
DEFAULT CHARACTER SET latin1
COLLATE 
latin1_general_ci
COMMENT 
'Datos del cliente';


-- -----------------------------------------------------
-- 
Table `libreria`.`pedidos`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `libreria`.`pedidos` (
  `
pedidoIDINT UNSIGNED NOT NULL AUTO_INCREMENT ,
  `
clienteIDINT UNSIGNED NOT NULL ,
  `
fechaDATE NOT NULL ,
  
PRIMARY KEY (`pedidoID`, `clienteID`) ,
  
INDEX `relacion_clientes_pedidos` (`clienteIDASC) ,
  
CONSTRAINT `relacion_clientes_pedidos`
    
FOREIGN KEY (`clienteID` )
    
REFERENCES `libreria`.`clientes` (`clienteID` )
    
ON DELETE NO ACTION
    ON UPDATE NO ACTION
)
ENGINE InnoDB
DEFAULT CHARACTER SET latin1
COLLATE 
latin1_general_ci
COMMENT 
'Lista de pedidos por fecha';


-- -----------------------------------------------------
-- 
Table `libreria`.`libros`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `libreria`.`libros` (
  `
ISBNCHAR(13NOT NULL ,
  `
autorVARCHAR(45NULL ,
  `
tituloVARCHAR(60NULL ,
  `
precioFLOAT(4,2NULL ,
  
PRIMARY KEY (`ISBN`) )
ENGINE InnoDB
DEFAULT CHARACTER SET latin1
COLLATE 
latin1_general_ci
COMMENT 
'Lista de libros';


-- -----------------------------------------------------
-- 
Table `libreria`.`comentarios_libros`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `libreria`.`comentarios_libros` (
  `
ISBNCHAR(13NOT NULL ,
  `
comentarioTEXT NULL ,
  
PRIMARY KEY (`ISBN`) ,
  
INDEX `relacion_comentarios_libros` (`ISBNASC) ,
  
CONSTRAINT `relacion_comentarios_libros`
    
FOREIGN KEY (`ISBN` )
    
REFERENCES `libreria`.`libros` (`ISBN` )
    
ON DELETE NO ACTION
    ON UPDATE NO ACTION
)
ENGINE InnoDB
DEFAULT CHARACTER SET latin1
COLLATE 
latin1_general_ci
COMMENT 
'Comentarios libros';


-- -----------------------------------------------------
-- 
Table `libreria`.`articulos_pedido`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `libreria`.`articulos_pedido` (
  `
pedidoIDINT UNSIGNED NOT NULL ,
  `
ISBNCHAR(13NOT NULL ,
  `
cantidadTINYINT UNSIGNED NOT NULL ,
  
PRIMARY KEY (`pedidoID`, `ISBN`) ,
  
INDEX `relacion_pedidos_articulos` (`pedidoIDASC) ,
  
INDEX `relacion_articulos_libros` (`ISBNASC) ,
  
CONSTRAINT `relacion_pedidos_articulos`
    
FOREIGN KEY (`pedidoID` )
    
REFERENCES `libreria`.`pedidos` (`pedidoID` )
    
ON DELETE NO ACTION
    ON UPDATE NO ACTION
,
  
CONSTRAINT `relacion_articulos_libros`
    
FOREIGN KEY (`ISBN` )
    
REFERENCES `libreria`.`libros` (`ISBN` )
    
ON DELETE NO ACTION
    ON UPDATE NO ACTION
)
ENGINE InnoDB
DEFAULT CHARACTER SET latin1
COLLATE 
latin1_general_ci;



SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS
  #2 (permalink)  
Antiguo 19/06/2009, 15:46
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Cotejamiento Utf8 Latin1

Por partes,
yo estoy de acuerdo con lo que leerás en este post:
http://forums.mysql.com/read.php?71,110525,178948

Vamos, que no puedes escribir el signo del euro y muchos otros en latin1.
Respecto al otro problema, el usar utf8, te recomiendo que eches un vistazo aquí:
http://www.forosdelweb.com/f86/cotej...spanol-629105/
Prueba y verás que se puede, pero tienes que atender la codificación de todas las partes, base, servidor, programa, documento donde tienes el formulario, navegador, etc.
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 17:55.