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

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

Moderador: Moderadores

cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

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

Mensagem 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?
Anexos
Acentuação - HeidiSQL.png
Acentuação - HeidiSQL.png (6.91 KiB) Exibido 8807 vezes
Acentuação - PHP.png
Acentuação - PHP.png (7.41 KiB) Exibido 8807 vezes
Acentuação - Harbour.png
Acentuação - Harbour.png (6.72 KiB) Exibido 8807 vezes
Inacio de Carvalho Neto
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

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

Mensagem 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?
Anexos
Acentuação - HeidiSQL.png
Acentuação - HeidiSQL.png (6.91 KiB) Exibido 8863 vezes
Acentuação - PHP.png
Acentuação - PHP.png (7.41 KiB) Exibido 8863 vezes
Acentuação - Harbour.png
Acentuação - Harbour.png (6.72 KiB) Exibido 8863 vezes
Inacio de Carvalho Neto
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

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

Mensagem 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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

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

Mensagem 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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

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

Mensagem 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.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

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

Mensagem por Kapiaba »

cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

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

Mensagem 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?
Inacio de Carvalho Neto
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

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

Mensagem 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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
HASA
Colaborador
Colaborador
Mensagens: 1088
Registrado em: 01 Set 2003 19:50
Localização: São Paulo
Contato:

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

Mensagem 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
Avatar do usuário
Vlademiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 752
Registrado em: 11 Jul 2005 02:46

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

Mensagem 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.
Avatar do usuário
Vlademiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 752
Registrado em: 11 Jul 2005 02:46

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

Mensagem 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.
Avatar do usuário
Vlademiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 752
Registrado em: 11 Jul 2005 02:46

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

Mensagem 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.
Avatar do usuário
Vlademiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 752
Registrado em: 11 Jul 2005 02:46

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

Mensagem 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.
Avatar do usuário
Vlademiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 752
Registrado em: 11 Jul 2005 02:46

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

Mensagem 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.
Avatar do usuário
Vlademiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 752
Registrado em: 11 Jul 2005 02:46

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

Mensagem 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...
Responder