Json

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

marsp
Usuário Nível 1
Usuário Nível 1
Mensagens: 46
Registrado em: 11 Fev 2013 14:09

Json

Mensagem por marsp »

Bom dia,

Estou importando um arquivo em Json, quando tento tirar os acentos, de um nome "José João Gonçalves" com uma funçao que usamos a muito tempo e esta funcionando, fica assim "JosA JoA o GonA alves", se tentar novamente o resultado fica sempre diferente. Alguem tem uma solução para isto.

obrigado
Avatar do usuário
Vlademiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 752
Registrado em: 11 Jul 2005 02:46

Json

Mensagem por Vlademiro »

O arquivo pode estar no formato utf8. Tem uma função que converte utf8 para ansi. Aqui no fórum tem alguns exemplos. Vou ver se tenho algum aqui.
Avatar do usuário
Vlademiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 752
Registrado em: 11 Jul 2005 02:46

Json

Mensagem por Vlademiro »

cAsc := hb_UTF8ToStr( cStr )

SuaFuncao( cAsc )
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Json

Mensagem por JoséQuintas »

Só pra reforçar:

NÃO existe um padrão em comunicação.
Pode funcionar num webservice de um jeito, e de outra forma em outro.
Pode precisar fazer o trabalho de conversão diferente pra cada webservice.

Fazer o que....
Poderiam aumentar a tabela ascii de 255 para 65536, mas isso significaria dobrar o tamanho de tudo, e mesmo assim poderia acabar não sendo suficiente.
Por enquanto inventaram o UTF8, que tem tamanho variável, e usa mais caracteres só aonde precisa.

Mesmo assim não se engane:

A tabela ascii continua com 255 caracteres.
Codepage diferente tem caractere diferente.
o UTF-8 tem todas juntas e ainda mais.
A conversão só vai ser 100% funcional se o caractere UTF-8 existir na codepage em uso.

Elementar:
Se a tabela ascii consegue representar 255 caracteres, mas o UTF-8 consegue representar milhares de caracteres... com certeza muitos deles não tem correspondência.
Vai ser tentativa e erro, e ver o que acontece.
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
Vlademiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 752
Registrado em: 11 Jul 2005 02:46

Json

Mensagem por Vlademiro »

Pois é.

Eu procuro sempre dar uma resposta curta, mas realmente as coisas são do jeito que vc acabou de descrever. Antigamente era só o programa executável. Agora temos webservice, banco de dados, outros aplicativos, páginas HTML, etc. Cada parte com o seu padrão de codificação. O Utf8 veio para unificar, e o trabalho já está adiantado, mas sempre vai ter aplicativos com codificação diferente. E ainda tem a codificação do editor que usamos para programar. O nosso papel é saber a codificação de cada uma dessas partes e converter quando necessário.
marsp
Usuário Nível 1
Usuário Nível 1
Mensagens: 46
Registrado em: 11 Fev 2013 14:09

Json

Mensagem por marsp »

Vlademiro e José Quintas,

Muito obrigado pela atenção, vou testar.
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Json

Mensagem por fladimir »

Tenta hb_UTF8ToStr() e se ainda precisar de mais uma depois depois win_ANSITOOEM
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
marsp
Usuário Nível 1
Usuário Nível 1
Mensagens: 46
Registrado em: 11 Fev 2013 14:09

Json

Mensagem por marsp »

Voces teriam esta funçao em xHarbour
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Json

Mensagem por fladimir »

Não sei como seria, talvez algum outro colega.
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Json

Mensagem por JoséQuintas »

Vlademiro escreveu:O Utf8 veio para unificar, e o trabalho já está adiantado
Se pensar direito....
UTF8 é pra representar todas as codepages ao mesmo tempo.
Você poderia cadastrar alguém da Rússia, China, Japão, Brasil, etc. no seu aplicativo, usando a codepage de origem do usuário.
Legal, jóia, lindo.....
Mas na hora de gerar pro banco, que só aceita os tradicionais, nenhuma conversão vai dar jeito.

Conclusão:
Mexeram, mexeram, mexeram.... e continua tudo a mesma coisa kkkk
Apenas trouxe mais trabalho para os aplicativos simples.
A nossa sorte é que as linguagens de programação continuam sendo em inglês, senão fud.... tudo.
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
Vlademiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 752
Registrado em: 11 Jul 2005 02:46

Json

Mensagem por Vlademiro »

O banco utf8 aceita qualquer caractere utf8. Todos os bancos modernos já vem com utf8 como padrão. O que eu disse antes é que o desenvolvedor sempre vai ter que se deparar com codificações diferentes. Tem muito aplicativo que não trabalha com utf8 mas na hora que precisa, ele converte de/para utf8.

Agora tudo converge para o padrão utf8. Os novos aplicativos já surgem nesse mundo. Mesmo que vc nunca vá vender pra China, os bancos modernos já lhe direcionam para utf8. É só fazer um teste. A maioria dos novos clientes de bancos de dados já sugerem utf8, o html5 tb, até os editores.
Avatar do usuário
Vlademiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 752
Registrado em: 11 Jul 2005 02:46

Json

Mensagem por Vlademiro »

Não sei de que banco vc está falando, que só aceita tradicionais. Só se vc está escolhendo trabalhar assim.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Json

Mensagem por JoséQuintas »

Vlademiro escreveu:Não sei de que banco vc está falando, que só aceita tradicionais. Só se vc está escolhendo trabalhar assim.
Ainda não entendeu.
UTF8... ok... vai aceitar José com acento.
O aplicativo.... ok, vai aceitar José com acento.
o banco.... NÃO vai aceitar José com acento.
Nesse caso não se trata de codepage, UTF-8, ou outra coisa qualquer, o banco NÃO aceita.

Na espanha, se não me engano tem N com acento.
No UTF-8 aceita N com acento.
Na codepage do Brasil NÃO aceita N com acento, não tem equivalente.
E no banco.. menos ainda.
Aí pergunto: No que ajudou gravar o N com acento? só pra tela ficar certa? só pra internet ficar certa?
E o resto? como fica?

UTF-8 aceita qualquer coisa ok, mas o resto não.
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
Vlademiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 752
Registrado em: 11 Jul 2005 02:46

Json

Mensagem por Vlademiro »

De que banco vc está falando ?

Se for banco de dados todos os atuais aceitam e até colocam como padrão.

Se for tudo utf8 não tem problema.
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

Json

Mensagem por Itamar M. Lins Jr. »

Ola!
De que banco vc está falando ?
Basta usar UTF8 ou UTF8EX no caso dos acentos no HB32/HB34
ES850, PTISO, ANSI etc... isso tudo é velharia. UTF/Unicode veio para substituir.
Entendi o Vlademiro, mas não entendi o José Quintas.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Responder