Página 2 de 2

Dúvida com Acentuação em Mysql

Enviado: 25 Mai 2022 17:13
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.

Dúvida com Acentuação em Mysql

Enviado: 25 Mai 2022 17:40
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

Dúvida com Acentuação em Mysql

Enviado: 25 Mai 2022 18:35
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.

Dúvida com Acentuação em Mysql

Enviado: 25 Mai 2022 18:55
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.

Dúvida com Acentuação em Mysql

Enviado: 25 Mai 2022 21:42
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.