Dúvida com Acentuação em Mysql

Fórum sobre Banco de Dados e RDDs para Clipper/[x]Harbour.

Moderador: Moderadores

rossine
Usuário Nível 3
Usuário Nível 3
Mensagens: 325
Registrado em: 06 Ago 2007 09:57
Localização: Divinópolis-MG

Dúvida com Acentuação em Mysql

Mensagem por rossine »

Olá Itamar,

Minhas variáveis aqui estão assim:

Código: Selecionar todos

Variable_name 	Value 	
character_set_client 	utf8mb4
character_set_connection 	utf8mb4
character_set_database 	utf8
character_set_filesystem 	binary
character_set_results 	utf8mb4
character_set_server 	latin1
character_set_system 	utf8
character_sets_dir 	/usr/share/mysql/charsets/
collation_connection 	utf8mb4_unicode_ci
collation_database 	utf8_unicode_ci
collation_server 	latin1_swedish_ci
Repare que "character_set_server" = "latin1" e "collation_server" = "latin1_swedish_ci", talvez possa ser isto.
Vou ver se tem como mudar isto.
Estou usando um servidor externo, não é local não.
Rossine.

Harbour 3.4, MingW / Msvc, QT, Qt5xhb, GtQtc, DbfCdx, MySql/MariaDB.
rossine
Usuário Nível 3
Usuário Nível 3
Mensagens: 325
Registrado em: 06 Ago 2007 09:57
Localização: Divinópolis-MG

Dúvida com Acentuação em Mysql

Mensagem por rossine »

Olá,

Sim, está assim:

Código: Selecionar todos

<!DOCTYPE html>
<html>
<head>
   <title>Teste</title>
   <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
   <link rel="icon" href="images/qi.ico">
</head>
<body>
   <div class="corpo" style="color: rgb( 255,255,244) ; background-color: rgb( 0,0,255); text-align: center;">
      <h1>Página principal</h1>
   </div>
</body>
</html>
Eu colocando ou não esta linha, não muda nada

Código: Selecionar todos

hb_cdpSelect( "UTF8EX" )
Eu uso isto na passagem dos valores dentro do JSON:

Código: Selecionar todos

cJson   := hb_jsonEncode( aMsg, .F., "UTF8EX" )
Mudei meu servidor aqui:

Executando os comandos:

Código: Selecionar todos

set global character_set_server = utf8;
set global character_set_database = utf8;
set global collation_server = utf8_unicode_ci;
set global character_set_client =utf8;
set global character_set_connection=utf8;
set global character_set_results=utf8;
agora ficou assim:

Código: Selecionar todos


show variables like 'collation%';

collation_connection 	utf8mb4_unicode_ci
collation_database 	utf8_unicode_ci
collation_server 	utf8_unicode_ci

show variables like '%character%';

character_set_client 	utf8mb4
character_set_connection 	utf8mb4
character_set_database 	utf8
character_set_filesystem 	binary
character_set_results 	utf8mb4
character_set_server 	utf8
character_set_system 	utf8
character_sets_dir 	/usr/share/mysql/charsets/

Mas ainda recebendo acentuação errada:

Código: Selecionar todos

MecÔnica bßsica de VeÝculos
Rossine.

Harbour 3.4, MingW / Msvc, QT, Qt5xhb, GtQtc, DbfCdx, MySql/MariaDB.
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Dúvida com Acentuação em Mysql

Mensagem por Itamar M. Lins Jr. »

Olá!
Tá errado ai no html tem " sobrando.
https://www.w3schools.com/tags/att_meta_charset.asp

Código: Selecionar todos

<!DOCTYPE html>
<html>

<head>
<meta charset="UTF-8">
</head>

<body>
<h1>My Website</h1>
<p>Some text...</p>
</body>

</html>
Simplifica ai a linha->

Código: Selecionar todos

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Dúvida com Acentuação em Mysql

Mensagem por Itamar M. Lins Jr. »

Olá!
Peguei aqui seu texto em html, está ok.
Deve ser depois que grava no BD, que está, ou gravando errado ou lendo do BD convertendo errado.
Ou no editor que não deve estar UTF-8.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
rossine
Usuário Nível 3
Usuário Nível 3
Mensagens: 325
Registrado em: 06 Ago 2007 09:57
Localização: Divinópolis-MG

Dúvida com Acentuação em Mysql

Mensagem por rossine »

Olá,

Consegui resolver da seguinte maneira:

Código: Selecionar todos

   cJson   := hb_jsonEncode( aMsg, .F. ) // , "UTF8EX" ) <- Tirei esta referencia
e inclui no arquivo .PHP a função "utf8_encode()" :

Código: Selecionar todos

    $parametros = json_decode( utf8_encode( file_get_contents( "php://input" ) ) ) ;
Com isto a acentuação ficou gravada no BD corretamente e também retornada corretamente para meu sistema em harbour:

Código: Selecionar todos

Legislação de Trânsito
Sinalização de Trânsito
Direção Defensiva
Primeiros Socorros
Meio Ambiente e Cidadania
Mecânica básica de Veículos
Obrigado pela ajuda de todos.
Rossine.

Harbour 3.4, MingW / Msvc, QT, Qt5xhb, GtQtc, DbfCdx, MySql/MariaDB.
Responder