Charset Banco x Aplicação

Olá pessoal,

Uso o Scriptcase 8 e ao configurar meu projeto deixei o charset como Unicode (UTF-8). Ao criar as aplicações (consulta, gráfico, formulário, controle, …) estou setando em suas configurações o mesmo charset. Acontece que quando publiquei o projeto pela primeira vez, usei o usuário root na configuração e defini o charset Unicode (UTF-8). Até aí tranquilo, os caracteres estavam todos legais sem problema algum.

Na segunda publicação, em que foram feitas atualizações no sistema, publiquei com um outro usuário que havia criado apenas para este sistema. Só que aí apareciam aqueles símbolos de uns losangos com uma interrogação dentro sabe? Então me questionei se, ao criar um usuário novo no banco, preciso criar algum charset pra ele? Mas aí olhando a base de dados, vi o banco estava escrito com *Character set: utf8 (UTF-8 Unicode) e tanto o banco quanto as tabelas com Collation: utf8_general_ci.

Pergunta, preciso alterar o collation das tabelas para utf8_unicode_ci ou não tem necessidade? Caso não haja necessidade, porque em campos do tipo varchar que defini nas aplicações como caixa alta aparecem as letras acentuadas em minúsculo?

Como posso corrigir isso nas minhas aplicações?

Grato,

Ilano.

Vai ser um trabalho porque agora misturou tudo.
Aconselho primeiro ver se esta tudo padronizado:

  1. Banco como utf8
  2. tabelas como utf8
  3. aplicações e projeto em utf8.
    Somente depois de ajustado isto me preocuparia em arrumar os registros que estão errados.
1 Curtida

Bom dia Alexandre,

Primeiro, muito obrigado pela atenção.
Então, meu banco de dados foi criado assim:

CREATE DATABASE cvt_deti
CHARACTER SET utf8
COLLATE utf8_general_ci;

E as tabelas criadas como esta

CREATE TABLE a001_paises (
id bigint AUTO_INCREMENT NOT NULL,
nome varchar(100) NOT NULL,
temcidades int DEFAULT 0,
/* Keys */
PRIMARY KEY (id)
) ENGINE = InnoDB;

CREATE UNIQUE INDEX paises_index01
ON a001_paises
(nome);

Já verifiquei todos os collations das tabelas, todas estão utf8_general_ci

Minhas aplicações no scripcase, como já disse, passei todas para utf8

A questão é que, quando usei o usuário root apresentou tudo normal, mas quando criei um novo usuário pro banco é que a coisa desandou pois, como disse no início do post "Na segunda publicação, em que foram feitas atualizações no sistema, publiquei com um outro usuário que havia criado apenas para este sistema. Só que aí apareciam aqueles símbolos…" por isso me questionei “…ao criar um usuário novo no banco, preciso criar algum charset pra ele?”. Depois foi que saí ajustando os nomes no banco de dados. Como ainda está tudo no início não tenho muita coisa pra corrigir, exceto, os nomes dos Países, Estados e Cidades.

Mas, até onde você falou e até onde eu vi no banco, está tudo certo. Onde mais posso estar errando?

O charset no apache e no php estão como utf-8? O prod foi configurado com o charset correto?