Página 1 de 3

Acentuação em banco de dados / PHP x Harbour

Enviado: 09 Abr 2023 23:42
por cjp
Pessoal, sempre tenho problema com acentuação em banco de dados. Preciso de ajuda, por favor.
O maior problema é que uso, ao mesmo tempo, PHP e Harbour, consultando a mesma tabela.
Preciso de uma forma que me permita usar a mesma tabela no PHP e no Harbour, sem problema de acentuação.
Veja o exemplo do anexo. Mostro como aparece no HeidiSQL, no PHP e no Harbour.
Esta tabela está com colação "latin1_swedish_ci", mas já tentei de outras formas também.
Alguém pode me ajudar?

Acentuação em banco de dados / PHP x Harbour

Enviado: 21 Abr 2023 14:06
por cjp
Pessoal, sempre tenho problema com acentuação em banco de dados. Preciso de ajuda, por favor.
O maior problema é que uso, ao mesmo tempo, PHP e Harbour, consultando a mesma tabela.
Preciso de uma forma que me permita usar a mesma tabela no PHP e no Harbour, sem problema de acentuação.
Veja o exemplo do anexo. Mostro como aparece no HeidiSQL, no PHP e no Harbour.
Esta tabela está com colação "latin1_swedish_ci", mas já tentei de outras formas também.
Alguém pode me ajudar?

Acentuação em banco de dados / PHP x Harbour

Enviado: 21 Abr 2023 18:50
por JoséQuintas
Acho que só você mesmo.

PHP deve ter codepage.
Página de internet tem codepage.
O MySQL tem codepage.
A conexão com MySQL também tem codepage.

Verifique cada um.
Talvez no google encontre resposta.

Quando precisei pro meu site, pesquisa no google resolveu.
Mas não uso php nele.

isso não tem a ver diretamente com harbour, tem a ver com toda configuração e uso de tudo isso.
php usa o que ? pode configurar como o que ? pode alterar conexão para o que ?
e a página de internet que usa o php ? pode configurar como o que ?

NÃO É PRA POSTAR A RESPOSTA A ESSAS PERGUNTAS, não mexo com isso.
É pra você mesmo pesquisar sobre o assunto.
tem o google, tem a inteligência artificial, o bing com IA, etc.

Acentuação em banco de dados / PHP x Harbour

Enviado: 21 Abr 2023 19:02
por JoséQuintas
bing.png
Olha aí uma pergunta no bing do windows 10.

Faça isso.
bing do windows, bing da internet, chatGPT, google, etc.

Acentuação em banco de dados / PHP x Harbour

Enviado: 21 Abr 2023 19:14
por Jairo Maia
cjp escreveu:Pessoal, sempre tenho problema com acentuação em banco de dados.
JoséQuintas escreveu:PHP deve ter codepage.
Página de internet tem codepage.
O MySQL tem codepage.
A conexão com MySQL também tem codepage.
Sim, tudo tem CodePage, mas CodePage é Codepage. E sim, é difícil dar uma dica de "pronto", mas vamos tentar passo-a-passo que quem sabe, talvez...

Inácio, primeira coisa é você informar qual a CodePage você usa no Harbour hoje. Isso porque penso que se você usar a Windows 1252 para todos, incluse e principalmente em seu Harbour, elas ficam compátiveis em qualquer lugar.

Acentuação em banco de dados / PHP x Harbour

Enviado: 22 Abr 2023 14:27
por Kapiaba

Acentuação em banco de dados / PHP x Harbour

Enviado: 25 Abr 2023 01:25
por cjp
Se por Codepage vocês estiverem falando do código da página do Notepad++, onde escrevo os programas (tanto para o Harbour quanto para o PHP), embora eu não entenda muito disso, mas sempre usei OEM850 para o Harbour e o UTF-8 para o PHP.
Não faço ideia do porquê dessa diferença.
Seria essa diferença a causa do problema? É o caso de passar a mesma Codepage nos dois? Neste caso, qual das duas é recomendável? Ou nenhuma delas?

Acentuação em banco de dados / PHP x Harbour

Enviado: 25 Abr 2023 19:55
por JoséQuintas
codepage do código fonte é apenas codepage do código fonte.

DE NOVO:

Tem a codepage DO CÓDIGO FONTE
Tem a codepage DA TELA DO APLICATIVO
Tem a codepage DA IMPRESSORA
Tem a codepage DO WINDOWS
Tem a codepage DO HTML
Tem a codepage DA SAÍDA DO PHP, teoricamente HTML
Tem a codepage DA CONEXÃO COM O BANCO
Tem a codepage DO BANCO DE DADOS
Tem a codepage DO PDF

Cada uma faz a sua parte, cada uma precisa saber o formato que entra e o formato que sai, com conversão dependendo do caso.
O que precisa fazer é analisar todo conjunto, pra ver o que vai poder/preferir fazer pra dar menos trabalho.
Como configura cada uma ? não sei
Dá pra deixar tudo igual ? não sei
Precisa converter codepage ? não sei
Tem função de conversão em cada um dos usos ? não sei

Por isso vai ter que pesquisar cada uma, fazer testes pra ver se o resultado é o esperado, etc.

Eu ACHO - NÃO SEI - que a conexão do MySQL poderia resolver tudo, já que o problema que mencionou é sobre o MySQL.

Acentuação em banco de dados / PHP x Harbour

Enviado: 26 Abr 2023 09:20
por HASA
Bom dia, como eu de praxe em HARBOUR já gravo sem acentuaCAO, passar para mysql foi muito tranquilo nessa parte. Uma dica seria vc criar uma ferramenta em Harbour retirando todos os acentos da base DBF, e nos fontes mesmo que o usuário acentue vc retira antes de gravar. Argumentei com os usuários que era uma exigência da Sefaz que não aceita caracteres especiais na geração do xml, dava alguns rejeições nesse sentido ai trabalhei essa.

T+
HASA

Acentuação em banco de dados / PHP x Harbour

Enviado: 02 Mai 2023 18:18
por Vlademiro
Se vc migrar tudo para utf8 os seus problemas vão se reduzir substancialmente. Isso porque o utf8 se consolidou como padrão mundial. Isso não quer dizer que as outras codificações não devam ser usadas. Se vc tem um sistema que roda a vários anos então migrar tudo para utf8 é trabalhoso e talvez não compense o esforço. Mas se vc vai começar do zero ou se possui um sistema pequeno e uma base de dados simples, é melhor migrar para utf8.

Acentuação em banco de dados / PHP x Harbour

Enviado: 02 Mai 2023 18:28
por Vlademiro
Para usar utf8 vc deve:

1) ter um editor com suporte a utf8. Sugiro o Vscode e a extensão de Antonino Pericone.

2) no Harbour selecione utf8. O utf8 já vem incluso no Harbour juntamente com o Pt850. O pt850 é o do Clipper e é o padrão. Então no início do seu programa faça hb_cdpselect("utf8") não faça utf8ex, apenas utf8.

3) finalmente o seu banco de dados utf8.

4) agora a parte realmente trabalhosa: nas funções que envolvem tamanho de strings substitua pelo equivalente em utf8. Len() deve ser trocada por hb_utf8Len(), por exemplo. Substr() troque por hb_utf8Substr() e assim sucessivamente. Consulte hbmk2 fundo utf8 para ter a lista das funções utf8. Nem todas envolvem strings.

Acentuação em banco de dados / PHP x Harbour

Enviado: 02 Mai 2023 18:32
por Vlademiro
Se vc não quer utf8 vc pode configurar o Harbour para PTISO e o editor para Ansi e o banco para iso-8859-1.

Eu disse vc pode. Não vc deve. Faça testes. Crie uma aplicação simples para testes. Uma agenda por exemplo.

Acentuação em banco de dados / PHP x Harbour

Enviado: 02 Mai 2023 18:44
por Vlademiro
O que escrevi no post anterior eu não tenho certeza. Com certeza tem gente que pode lhe ajudar. Isso porque eu abandonei essas codificações há mais de dez anos. Eu uso Harbour no meu trabalho na criação de Scripts. Eu só uso utf8.

Acentuação em banco de dados / PHP x Harbour

Enviado: 02 Mai 2023 18:47
por Vlademiro
Agora o uso de várias codificações nas empresas é algo normal. Não tem como fugir disso. Fatalmente o seu sistema vai precisar conversar com outro sistema em outro padrão. Eu defendo o utf8 para tudo só se vc puder. E mesmo que vc porte tudo para utf8 vai precisar um dia conversar com um sistema externo que use ansi ou cp850.

Acentuação em banco de dados / PHP x Harbour

Enviado: 02 Mai 2023 18:49
por Vlademiro
O Harbour tem tb a função hb_translate que converte uma string em uma codepage em outra. Faz uma busca no Google por Harbour hb_translate...