Ver Mensaje Individual
  #1 (permalink)  
Antiguo 19/06/2009, 13:20
ARAPSPGON
 
Fecha de Ingreso: octubre-2007
Mensajes: 57
Antigüedad: 19 años
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_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_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` (
  `
clienteID` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
  `
nombre` VARCHAR(20) NOT NULL ,
  `
direccion` VARCHAR(45) NOT NULL ,
  `
ciudad` VARCHAR(40) NOT 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` (
  `
pedidoID` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
  `
clienteID` INT UNSIGNED NOT NULL ,
  `
fecha` DATE NOT NULL ,
  
PRIMARY KEY (`pedidoID`, `clienteID`) ,
  
INDEX `relacion_clientes_pedidos` (`clienteID` ASC) ,
  
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` (
  `
ISBN` CHAR(13) NOT NULL ,
  `
autor` VARCHAR(45) NULL ,
  `
titulo` VARCHAR(60) NULL ,
  `
precio` FLOAT(4,2) NULL ,
  
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` (
  `
ISBN` CHAR(13) NOT NULL ,
  `
comentario` TEXT NULL ,
  
PRIMARY KEY (`ISBN`) ,
  
INDEX `relacion_comentarios_libros` (`ISBN` ASC) ,
  
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` (
  `
pedidoID` INT UNSIGNED NOT NULL ,
  `
ISBN` CHAR(13) NOT NULL ,
  `
cantidad` TINYINT UNSIGNED NOT NULL ,
  
PRIMARY KEY (`pedidoID`, `ISBN`) ,
  
INDEX `relacion_pedidos_articulos` (`pedidoID` ASC) ,
  
INDEX `relacion_articulos_libros` (`ISBN` ASC) ,
  
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;