Converte caracteres padrão DOS/OEM pra WIN/ANSI e vice-versa
Moderador: Moderadores
-
Laudelino Scarmagnani
- Usuário Nível 3

- Mensagens: 303
- Registrado em: 07 Fev 2007 10:54
Re: Converte caracteres padrão DOS/OEM pra WIN/ANSI e vice-versa
Valeu!
Usei a rotina do Pablo, mas salvei a do Toledo também.
Desta vez, funcionou.
Obridão a todos!
Laudelino.
Usei a rotina do Pablo, mas salvei a do Toledo também.
Desta vez, funcionou.
Obridão a todos!
Laudelino.
Converte caracteres padrão DOS/OEM pra WIN/ANSI e vice-versa
Baixei a função e ao testar utilizando um retorno da função de consultar cep https://pctoledo.org/forum/viewto ... 43&t=13329 o endereco de retorno deste cep 08485-010 que traz o carater Igarapé da Missão tanto ele minisculo como convertendo para maiusculo nao se tem a conversão correta, ficando IgarapU da MissOO. Utilizei o metodo ANSI to OEM, e mesmo de OEM para ANSI como ja era esperado, não deu certo.
Abraços
Abraços
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
- Jairo Maia
- Moderador
- Mensagens: 2785
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
Converte caracteres padrão DOS/OEM pra WIN/ANSI e vice-versa
Olá Andril,
Com o exemplo abaixo funciona corretamente.
PS: Veja que o traço (99999-999) faz parte do CEP, pois montei para testar o servidor do José Quintas. Para o Republica Virtual por exemplo, o traço não pode fazer parte do CEP.
PS1: Os códigos foram extraídos de idéias postadas por colegas neste fórum.
Com o exemplo abaixo funciona corretamente.
PS: Veja que o traço (99999-999) faz parte do CEP, pois montei para testar o servidor do José Quintas. Para o Republica Virtual por exemplo, o traço não pode fazer parte do CEP.
PS1: Os códigos foram extraídos de idéias postadas por colegas neste fórum.
Código: Selecionar todos
// Compilar: HBMK2 nome_exemplo -lxhb
#include "hbdyn.ch"
REQUEST HB_LANG_PT
REQUEST HB_CODEPAGE_PT850
REQUEST HB_GT_WVT_DEFAULT
Function Main()
Local getlist := {}, nHandleDLL, nStatus, cBuf, cUf, cCid, cBai, cRua
Clear Screen
If !Internet()
Return
Endif
HB_LANGSELECT( "PT" )
HB_SETCODEPAGE( "PT850" )
cCep=Space( 9 )
@ 10,10 Say "Informe o CEP: " Get cCep Pict "!!!!!-!!!"
Read
nHandleDLL:=HB_LibLoad( "UrlMon.dll" )
nStatus:=HB_DynCall( { "URLDownloadToFileA", nHandleDLL, HB_DYN_CALLCONV_STDCALL}, 0, "http://www.jpatecnologia.com.br/cep.asp?cep=" + cCep + "&formato=xml", "ENDERECO.XML", 0, 0 )
cBuf:=MemoRead("ENDERECO.XML")
cUf := substr(cBuf, at('<uf>', cBuf) + 4, at('</uf>', cBuf) - (at('<uf>', cBuf) + 4))
cCid := substr(cBuf, at('<cidade>', cBuf) + 8, at('</cidade>', cBuf) - (at('<cidade>', cBuf) + 8))
cBai := substr(cBuf, at('<bairro>', cBuf) + 8, at('</bairro>', cBuf) - (at('<bairro>', cBuf) + 8))
cRua := substr(cBuf, at('<logradouro>', cBuf) + 12, at('</logradouro>', cBuf) - (at('<logradouro>', cBuf) + 12))
@ 12,10 SAY "Rua......: " + HB_AnsiToOem(cRua)
@ 13,10 SAY "Bairro...: " + HB_AnsiToOem(cBai)
@ 14,10 SAY "Cidade...: " + HB_AnsiToOem(cCid)
@ 15,10 SAY "Estado...: " + HB_AnsiToOem(cUf)
InKey(0)
Return Nil
Function Internet( cAddress )
Local aHosts
If cAddress == NIL
cAddress := "www.google.com.br"
Endif
InetInit()
aHosts := InetGetHosts( cAddress )
If aHosts == Nil .Or. len( aHosts ) = 0
InetCleanUp()
Return .f.
Endif
InetCleanUp()
Return .t.
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)
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)
Converte caracteres padrão DOS/OEM pra WIN/ANSI e vice-versa
Olá Jairo Maia, pelo que tinha pesquisado a função HB_AnsiToOem() retornava o que eu preciso, porem, o sistema esta em Clipper 5.2e. A função do Pablo/Toledo resolveria o problema, mais ocorre o que postei acima.
Abraços
Abraços
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Converte caracteres padrão DOS/OEM pra WIN/ANSI e vice-versa
Olá Anderson,
Explique de que forma você consegue obter o nome da cidade "Igarapé da Missão", isto é, de que forma você passa para sua aplicação Clipper ?
Pois eu fiz o teste (aqui em anexo) e converte normal. Se você pegar o nome da cidade "Igarapé da Missão" e gravar no Notepad (por exemplo) ele vai gravar em ANSI. Mas se você pegar o editor QEdit ele irá ler outros caracteres, exibindo desta forma: "IgarapÚ da MissÒo".
Tenho que entender como você passa esse valor em ANSI para o Clipper, pode ser que aí esteja o erro.
Veja o exemplo e você entenderá o que estou dizendo. O exemplo em anexo grava em arquivo .txt
Explique de que forma você consegue obter o nome da cidade "Igarapé da Missão", isto é, de que forma você passa para sua aplicação Clipper ?
Pois eu fiz o teste (aqui em anexo) e converte normal. Se você pegar o nome da cidade "Igarapé da Missão" e gravar no Notepad (por exemplo) ele vai gravar em ANSI. Mas se você pegar o editor QEdit ele irá ler outros caracteres, exibindo desta forma: "IgarapÚ da MissÒo".
Tenho que entender como você passa esse valor em ANSI para o Clipper, pode ser que aí esteja o erro.
Veja o exemplo e você entenderá o que estou dizendo. O exemplo em anexo grava em arquivo .txt
- Anexos
-
Converte.rar- (67.94 KiB) Baixado 321 vezes
Um clip-abraço !
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Converte caracteres padrão DOS/OEM pra WIN/ANSI e vice-versa
Olá Pablo, exatamente, no exemplo "voce" gravou através do comando do Clipper, assim a função funciona como esperado.Pablo César escreveu:O exemplo em anexo grava em arquivo .txt
O problema de conversão ocorre do resultado obtido do webservice, o qual coloquei em anexo para que possa ver, ocorre o que voce postou sobre o editor QEdit.
Obrigado pelo retorno.
- Anexos
-
leu.txt- (227 Bytes) Baixado 290 vezes
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Converte caracteres padrão DOS/OEM pra WIN/ANSI e vice-versa
Oi Anderson, continuo sem entender direito. Esse arquivo leu.txt é o arquivo obtido do Web site ?
Se for então é só ler o arquivo e utilizar a função WINCAR("W2D",MemoRead("Leu.txt")), aqui pra mim está funcionando. Não estou entendendo qual é o seu problema, me desculpe.
Se esse arquivo leu.txt foi gravado dessa forma, então está correto, mas se você pegar um editor puro OEM não dará certo. Ainda preciso saber como é vindo a string do web site.
Anexei o exemplo lendo o seu arquivo e o resultado é positivo. Confira.
Se for então é só ler o arquivo e utilizar a função WINCAR("W2D",MemoRead("Leu.txt")), aqui pra mim está funcionando. Não estou entendendo qual é o seu problema, me desculpe.
Se esse arquivo leu.txt foi gravado dessa forma, então está correto, mas se você pegar um editor puro OEM não dará certo. Ainda preciso saber como é vindo a string do web site.
Anexei o exemplo lendo o seu arquivo e o resultado é positivo. Confira.
- Anexos
-
Converte.rar- (68.28 KiB) Baixado 329 vezes
Um clip-abraço !
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
- Jairo Maia
- Moderador
- Mensagens: 2785
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
Converte caracteres padrão DOS/OEM pra WIN/ANSI e vice-versa
Olá Pessoal,
Penso que o resultado do site está vindo em UTF-8, por isso essa dificuldade com os caracteres acentuados. Em clipper não sei como fazer a conversão.Pablo César escreveu:Ainda preciso saber como é vindo a string do web site.
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)
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)
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
Converte caracteres padrão DOS/OEM pra WIN/ANSI e vice-versa
O Jairo tem razão é UTF8 que chega o retorno do WEBSERVICE em xHarobur tem funções especificas para isso:
hb_UTF8ToStr()
hb_StrToUTF8()
Andril,
Se procurar pelo fórum vai achar um EXE que uma vez um colega criou em xHarbour para o pessoal do Clipper usar essa conversão.
hb_UTF8ToStr()
hb_StrToUTF8()
Andril,
Se procurar pelo fórum vai achar um EXE que uma vez um colega criou em xHarbour para o pessoal do Clipper usar essa conversão.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
xHarbour.org + Hwgui + PostgreSql
Converte caracteres padrão DOS/OEM pra WIN/ANSI e vice-versa
Também desconfio disso. Pensando nisso, para não utilizar um EXE extra, postarei no topico referente a consulta de CEP, para que o colega se puder, coloque a codificação da página com o charset em português/br quem sabe resolve.Jairo Maia escreveu:resultado do site está vindo em UTF-8
Obrigado a todos pela ajuda.
Abraços
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
