UTF-8
Moderador: Moderadores
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
UTF-8
Sei lá... tanta coisa sobre UTF-8, e aí acontece isso.
E aí?
E aí?
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/
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/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
UTF-8
Então... é nessas horas que eu pergunto:
Vale a pena abandonar o tradicional ANSI ?
Se nem o Windows se entende com essas coisas...
O curioso é que isso veio compactado, foi descompactado, mas agora não quer compactar.
Talvez porque usei o 7-zip, que não é igual o ZIP que é do Windows, mas....
Isso já impede de zipar a HMG pelos meios normais.
Talvez no Windows 11..... kkkkk
Vale a pena abandonar o tradicional ANSI ?
Se nem o Windows se entende com essas coisas...
O curioso é que isso veio compactado, foi descompactado, mas agora não quer compactar.
Talvez porque usei o 7-zip, que não é igual o ZIP que é do Windows, mas....
Isso já impede de zipar a HMG pelos meios normais.
Talvez no Windows 11..... kkkkk
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/
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/
- Mario Mesquita
- Usuário Nível 4

- Mensagens: 613
- Registrado em: 08 Dez 2009 13:47
- Localização: Rio de Janeiro
UTF-8
Boa tarde, pessoal.
Aproveitando o post, gostaria de uma ajuda.
Eu tenho uma tabela DBF de um programa feito em HMG 3.0.46, alguns campos com letras acentuadas. A configuração de idioma está "REQUEST HB_LANG_PT" e
"HB_LangSelect("PT")".
Meu problema é que fiz um programa com o HMG 3.4.4 Unicode com fontes em UTF-8 e tenho que ler essa tabela pra gerar um arquivo. O programa está com "REQUEST HB_CODEPAGE_UTF8EX" e
"hb_cdpSelect("UTF8EX")".
Vendo vários posts, entendi que tenho que fazer uma conversão para ele pegar essas letras com acento, mas não está dando certo.
Usei "HB_StrToUTF8()" e "HB_AnsiToOem()" mas não funcionou. Devo estar fazendo algo errado. Não sei o quê.
Se alguém souber, agradeço.
Saudações,
Mario.
Aproveitando o post, gostaria de uma ajuda.
Eu tenho uma tabela DBF de um programa feito em HMG 3.0.46, alguns campos com letras acentuadas. A configuração de idioma está "REQUEST HB_LANG_PT" e
"HB_LangSelect("PT")".
Meu problema é que fiz um programa com o HMG 3.4.4 Unicode com fontes em UTF-8 e tenho que ler essa tabela pra gerar um arquivo. O programa está com "REQUEST HB_CODEPAGE_UTF8EX" e
"hb_cdpSelect("UTF8EX")".
Vendo vários posts, entendi que tenho que fazer uma conversão para ele pegar essas letras com acento, mas não está dando certo.
Usei "HB_StrToUTF8()" e "HB_AnsiToOem()" mas não funcionou. Devo estar fazendo algo errado. Não sei o quê.
Se alguém souber, agradeço.
Saudações,
Mario.
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
UTF-8
Olá!
Saudações,
Itamar M. Lins Jr.
Vai ficar para traz, pq todo mundo está usando UTF8 até a Microsoft, ninguém usa mais ansi, é tudo UTF8. Essas coisas antigas, só para compatibilidade.Vale a pena abandonar o tradicional ANSI ?
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
UTF-8
Olá!
Isso! Estava tentando lembrar:
E o contrario.
Essa parte de testes está no LINUX. Estava procurando.
Saudações,
Itamar M. Lins Jr.
Isso! Estava tentando lembrar:
Código: Selecionar todos
hb_StrToUtf8( sData, sCodepageIN )
Translates sData from a codepage sCodepageIN to utf8Código: Selecionar todos
hb_Utf8ToStr( sData, sCodepageOUT )
Translates sData from utf8 to a sCodepageOUT codepageSaudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
- Mario Mesquita
- Usuário Nível 4

- Mensagens: 613
- Registrado em: 08 Dez 2009 13:47
- Localização: Rio de Janeiro
UTF-8
Boa noite.
Kapiaba, dá um erro de execução: "Argument Error". Já tinha tentado algo assim de um exemplo e deu também.
Aparentemente, ele pega o texto do campo da tabela mas não converte, pois dei um display antes e depois e não muda nada.
Uma coisa tão simples dando canseira... vou tentar mais coisas aqui, se alguém puder dar uma luz, desde já agradeço.
Abraço,
Mario.
Kapiaba, dá um erro de execução: "Argument Error". Já tinha tentado algo assim de um exemplo e deu também.
Aparentemente, ele pega o texto do campo da tabela mas não converte, pois dei um display antes e depois e não muda nada.
Uma coisa tão simples dando canseira... vou tentar mais coisas aqui, se alguém puder dar uma luz, desde já agradeço.
Abraço,
Mario.
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
UTF-8
Olá!
Saudações,
Itamar M. Lins Jr.
Qual é a versão do seu Harbour ?Kapiaba, dá um erro de execução: "Argument Error". Já tinha tentado algo assim de um exemplo e deu também.
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
- Mario Mesquita
- Usuário Nível 4

- Mensagens: 613
- Registrado em: 08 Dez 2009 13:47
- Localização: Rio de Janeiro
UTF-8
Oi, Itamar.
Estou usando a 3.4.4 que vem no HMG. Tentado aqui, constatei que ele não reconhece o "PT". Passou com "PTISO" e "PT850", mas não converte o texto que vem do campo da tabela. Fica do mesmo jeito que visto pelo DBU quando abro a tabela.
Quando inicio o programa, está configurado assim:
Na minha rotina de leitura está assim:
Parece tão fácil, pegar o conteúdo do campo, converter e botar num grid. Não funciona. Isso era bem importante pra mim, não só nessa tarefa, mas
para futuramente migrar esses dados, quando eu converter meus programas do HMG 3.0.46 para a 3.4.4 ou 3.5, podendo ser para DBF ainda mas futuramente
visando migrar para SQL. Complicado travar em coisas aparentemente bobas.
Se alguém tiver alguma alternativa, agradeço a ajuda.
Abraço,
Mario
Estou usando a 3.4.4 que vem no HMG. Tentado aqui, constatei que ele não reconhece o "PT". Passou com "PTISO" e "PT850", mas não converte o texto que vem do campo da tabela. Fica do mesmo jeito que visto pelo DBU quando abro a tabela.
Quando inicio o programa, está configurado assim:
Código: Selecionar todos
REQUEST HB_CODEPAGE_UTF8EX, HB_CODEPAGE_PT850, HB_CODEPAGE_PTISO, HB_LANG_PT
hb_cdpSelect( "UTF8EX" )
Código: Selecionar todos
STATIC FUNCTION Carregar_Nomes()
LOCAL wData1 := Frm_RemessaCCN.DatePicker_1.Value
DBSELECTAR("CLIENTES")
IF ! DBSEEK(DTOS(wData1))
WHILE ! EOF()
IF DATACAD >= wData1
EXIT
ENDIF
DBSKIP()
END
ENDIF
WHILE ! EOF()
IF DATACAD == wData1
hb_cdpSelect( "PTISO" )
HB_LangSelect( "PT" )
msginfo('entrou: '+CLIENTES->NOME)
cNome := HB_StrToUTF8(CLIENTES->NOME, "PT")
msginfo('virou: '+cnome)
Frm_RemessaCCN.Grid_2.AddItem( { CLIENTES->MATRIC, ; // 1
cNome, ; // 2
CLIENTES->CPF } ) // 3
hb_cdpSelect( "UTF8EX" )
ENDIF
DBSKIP()
END
RETURN NIL
para futuramente migrar esses dados, quando eu converter meus programas do HMG 3.0.46 para a 3.4.4 ou 3.5, podendo ser para DBF ainda mas futuramente
visando migrar para SQL. Complicado travar em coisas aparentemente bobas.
Se alguém tiver alguma alternativa, agradeço a ajuda.
Abraço,
Mario
- Jairo Maia
- Moderador
- Mensagens: 2785
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
UTF-8
Tente mudar esse trecho da sua função que está assim:
Para esta forma:
Código: Selecionar todos
IF DATACAD == wData1
hb_cdpSelect( "PTISO" )
HB_LangSelect( "PT" )
msginfo('entrou: '+CLIENTES->NOME)
cNome := HB_StrToUTF8(CLIENTES->NOME, "PT")
msginfo('virou: '+cnome)
Frm_RemessaCCN.Grid_2.AddItem( { CLIENTES->MATRIC, ; // 1
cNome, ; // 2
CLIENTES->CPF } ) // 3
hb_cdpSelect( "UTF8EX" )
ENDIF
Código: Selecionar todos
IF DATACAD == wData1
//hb_cdpSelect( "PTISO" )
//HB_LangSelect( "PT" )
msginfo('entrou: '+CLIENTES->NOME)
cNome := HB_StrToUTF8(CLIENTES->NOME, "PT850") // <<<==== Mude para PT850 a CodePage aqui
msginfo('virou: '+cnome)
Frm_RemessaCCN.Grid_2.AddItem( { CLIENTES->MATRIC, ; // 1
cNome, ; // 2
CLIENTES->CPF } ) // 3
//hb_cdpSelect( "UTF8EX" )
ENDIFAbraç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)
- Mario Mesquita
- Usuário Nível 4

- Mensagens: 613
- Registrado em: 08 Dez 2009 13:47
- Localização: Rio de Janeiro
UTF-8
Oi, Jairo!
Cara, teve uma mudança: Agora ele converteu para exatamente como aparece no DBU. Antes convertia para um outro caractere. Um pequeno progresso.
Agora precisa converter isso pra algo e ficar certo.
Tentei colar a imagem mas não consegui. Nunca fiz. Perdoem a burrice.
Ainda aceitando qualquer dica, amigos.
Abraço,
Mario.
Cara, teve uma mudança: Agora ele converteu para exatamente como aparece no DBU. Antes convertia para um outro caractere. Um pequeno progresso.
Agora precisa converter isso pra algo e ficar certo.
Tentei colar a imagem mas não consegui. Nunca fiz. Perdoem a burrice.
Ainda aceitando qualquer dica, amigos.
Abraço,
Mario.
- Mario Mesquita
- Usuário Nível 4

- Mensagens: 613
- Registrado em: 08 Dez 2009 13:47
- Localização: Rio de Janeiro
UTF-8
Amigos, consegui.
Dei um chute e entrou no gol, na cagada:
Botei o "HB_AnsiToOem()" convertendo o campo, aí o "HB_StrToUTF8()" fez certinho.
Obrigado pelo apoio de vocês. Já estava pifando aqui, sem opções.
Abraço a todos,
Mario.
Dei um chute e entrou no gol, na cagada:
Código: Selecionar todos
WHILE ! EOF()
// Cliente sem CPF não será enviado, pois será rejeitado //
//IF EMPT(ALLTRIM(CLIENTES->CPF))
// DBSKIP()
// LOOP
//ENDIF
////
IF DATACAD == wData1
//hb_cdpSelect( "PTISO" )
//HB_LangSelect( "PT" )
msginfo('entrou: '+CLIENTES->NOME)
cNome := HB_StrToUTF8(HB_AnsiToOem(CLIENTES->NOME), "PT850")
msginfo('virou: '+cnome)
Frm_RemessaCCN.Grid_2.AddItem( { CLIENTES->MATRIC, ; // 1
cNome, ; // 2
CLIENTES->CPF } ) // 3
//hb_cdpSelect( "UTF8EX" )
ENDIF
DBSKIP()
END
Obrigado pelo apoio de vocês. Já estava pifando aqui, sem opções.
Abraço a todos,
Mario.
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
UTF-8
Mas... e como fica no programa, até agora não entendi, no que se refere a apenas usar, ou ter que ficar convertendo toda hora.Itamar M. Lins Jr. escreveu:Vai ficar para traz, pq todo mundo está usando UTF8 até a Microsoft, ninguém usa mais ansi, é tudo UTF8. Essas coisas antigas, só para compatibilidade.
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/
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/
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
UTF-8
Olá!
Converte o DBF ou a BASE em MySQL por exemplo COLATE_XXX para UTF8EX o EX é UTF8 com acentos no Harbour
Neste caso acima ele usava CP PT850
Então no DBF ele dá um replace
replace all CLIENTES->NOME with HB_StrToUTF8(HB_AnsiToOem(CLIENTES->NOME), "PT850")
Nisso ele já não precisa mais converter nada para UTF8.
Saudações,
Itamar M. Lins Jr.
Ué, só converte 1 vez. Se tiver gravado no BD sem ser UTF8. Se o BD for UTF8 nem precisa.Mas... e como fica no programa, até agora não entendi, no que se refere a apenas usar, ou ter que ficar convertendo toda hora.
Converte o DBF ou a BASE em MySQL por exemplo COLATE_XXX para UTF8EX o EX é UTF8 com acentos no Harbour
Código: Selecionar todos
hb_cdpSelect( "UTF8EX" )
HB_LangSelect( "PT" )
Então no DBF ele dá um replace
replace all CLIENTES->NOME with HB_StrToUTF8(HB_AnsiToOem(CLIENTES->NOME), "PT850")
Nisso ele já não precisa mais converter nada para UTF8.
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
- Jairo Maia
- Moderador
- Mensagens: 2785
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
UTF-8
Apenas para esclarecer algo que parece está confuso nesse tópico desde a primeira mensagem do Mario Mesquita:
Este comando instrui o compilador a carregar as funções da CodePage UTF8EX com suporte a caracteres latinos.
Esta função instrui o sistema a usar a CodePage UTF8EX a partir desse ponto em diante no sistema. Até aqui tudo bem, entendido, e nenhuma confusão.
Porém, com esses comandos tem confusão, vamos então entender o que fazem:Este comando instrui o compilador a carregar as funções de suporte de MENSAGENS INTERNAS DO HARBOUR para o idioma em português.
Esta função define que o sistema ao exibir mensagens internas do Harbour, como as mensagens de erro por exemplo, que sejam apresentadas no idioma português.
Se omitir esses comandos, as mensagens internas como de erros serão em inglês, que é o padrão do Harbour, assim como era no Clipper.
RESUMINDO:
hb_cdpSelect() = Seleciona a CodePage no sistema
HB_LangSelect() = Seleciona o idioma a ser usado para apresentar as mensagens internas do Harbour.
Não há nenhuma relação entre elas, são definições completamente diferentes.
Código: Selecionar todos
REQUEST HB_CODEPAGE_UTF8EXCódigo: Selecionar todos
hb_cdpSelect("UTF8EX")Porém, com esses comandos tem confusão, vamos então entender o que fazem:
Código: Selecionar todos
REQUEST HB_LANG_PTCódigo: Selecionar todos
HB_LangSelect("PT")Se omitir esses comandos, as mensagens internas como de erros serão em inglês, que é o padrão do Harbour, assim como era no Clipper.
RESUMINDO:
hb_cdpSelect() = Seleciona a CodePage no sistema
HB_LangSelect() = Seleciona o idioma a ser usado para apresentar as mensagens internas do Harbour.
Não há nenhuma relação entre elas, são definições completamente diferentes.
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)
