Ir para conteúdo
Fórum Script Brasil
  • 0

dump codificação


set_joaocarlos

Pergunta

Saudações, estou com um problema que não estou conseguindo resolver.

Tenho um banco de dados setado em utf8;

tenho um script sql de 50MG com dados para serem inseridos.

os dados estão com acentuação normais acentos, ç, etc.

quando faço o inserte apesar de o banco estar em utf8 e eu setar --default-character-set=utf8 quando faço a inserção os dados continuam no BD com acentuação comum, o que me causa um problema de codificação dupla na hora de exibir.

no BD esta 'João' mas ao exibir joo ;

Pensei em fazer um foreach e dar um update em cada campo assim inserir os dados na codficação correta, mas acredito existir uma maneira melhor e mais correta de fazer isso.

Se puderem ajudar ficarei grato.

Desde já agradeço.

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Estou confuso, Se alguém puder ajudar a entender agradeço.

em uma tabela CHARACTER SET utf8 COLLATE utf8_general_ci ;

Em um SQL tenho em set names = utf8;

/*!40101 SET NAMES utf8*/;
CREATE TABLE IF NOT EXISTS `name` (
`id` INT NOT NULL,
`nome` varchar(100) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `name` (`id`,`nome`) VALUES
('0', 'João'),
('1', 'José'),
('2', 'Cláudio');
neste caso os dados foram inserido exatamente como mostrado:
+----+---------+
| id | nome |
+----+---------+
| 0 | João |
| 1 | José |
| 2 | Cláudio |
+----+---------+
O que me causou espanto, pois achei que seriam inseridos:
+----+----------+
| id | nome |
+----+----------+
| 0 | João |
| 1 | José |
| 2 | Cláudio |
+----+----------+
Depois de varias tentativas para mudar o texto e um dia de trabalho perdido, resolvi tentar criar uma tabela em latin1 e depois converte-la para utf8 com a esperança de que na conversão os dados fossem convertidos juntos então:
/*!40101 SET NAMES latin1*/;
CREATE TABLE IF NOT EXISTS `name` (
`id` INT NOT NULL,
`nome` varchar(100) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO `name` (`id`,`nome`) VALUES
('0', 'João'),
('1', 'José'),
('2', 'Cláudio');
E para minha surpresa:
+----+----------+
| id | nome |
+----+----------+
| 0 | João |
| 1 | José |
| 2 | Cláudio |
+----+----------+
Então percebi que alterando o set names para latin1 os dados eram inseridos na maneira que preciso;
Isso me deixou confuso, então gostaria de entender o que esta acontecendo, onde estou errando na linha de raciocínio.
Se puderem me dizer onde estou equivocado agradeço.
Para mim em uma tabela utf8 os dados são armazenados desta forma: João, José ,Cláudio;
E em uma tabela latin: João, José, Cláudio;
Então porque precisei setar set names para latin em uma tabela utf8 para os dados serem inseridos corretos?
Desde já agradeço.
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...