Página 1 de 1

Problemas na acentuação no harbour

Enviado: 25 Jun 2012 23:39
por Vlademiro
Pessoal, estou com problemas na acentuação. Faz é tempo que tento resolver sem sucesso.

Seguinte, preciso configurar meu harbour para UTF8, conforme o fonte abaixo :

Código: Selecionar todos

REQUEST HB_CODEPAGE_PTISO
//REQUEST HB_CODEPAGE_PT850 

FUNCTION MAIN()
LOCAL   aOptions := { "Materiais:Grupos:Sub-Grupos:Materiais",;
                      "Ptos de estoque:Centros de estoque" +;
                                     ":Sub-centros de estoque" + ;
                                     ":Locais de estoque" +;
                                     ":Tipos de locais" , ;
                      "Tipos de movimentos:Grupo:Tipos de movimentos",;
                      "Utilitários:Sair" }
LOCAL   nSel  := 1.01
LOCAL   aAttrib

AltD(1)
//  SETMODE( 25,80 )  // Tava deixando lento a inicialização
 HB_CDPSELECT( "UTF8" )
 HB_LANGSELECT('PT')
Agora o problema :

Quando estou no GET (por exemplo) e eu digito : Á é ç ó ou qualquer caractere acentuado, eu consigo VER o caracter CORRETAMENTE, mas uma fração de segundos depois ele se transforma em um coração.

Esse probleminha é chato e aparentemente simples de resolver, mas já tentei de tudo e não consigo

Alguém já passou por isso ?
Qualquer ajuda será bem vinda.

Obrigado.

Problemas na acentuação no harbour

Enviado: 26 Jun 2012 02:52
por Imatech
Just try:

Código: Selecionar todos


  REQUEST HB_LANG_PT

  REQUEST HB_CODEPAGE_UTF8
  REQUEST HB_CODEPAGE_UTF8EX

 ...


  HB_LANGSELECT( 'PT' )

  HB_CDPSELECT( "UTF8EX" ) // or: HB_SETCODEPAGE( "UTF8EX" )



Problemas na acentuação no harbour

Enviado: 26 Jun 2012 06:41
por lugab
Ola, bom dia !

Gostaria de aproveitar o tema do tópico e perguntar se existe algum codigo que roda em xhb que seja capaz de converter um arquivo texto qualquer de , digamos, N linhas de 80 colunas, transformando esse arquivo em UTF8.

Não acredito que haja uma função capaz de fazer a conversão vapt-vupt, no arquivo como um todo, e sim linha a linha.

Acho q devo Jogar cada linha numa variavel de memória, converter a varável e gravar as variaveis no novo arquivo. Se for realmente assim, então eu só preciso saber os comandos de conversão para cada linha e sem seguida como gravar aqueles 4 caracteres malucos no início do arquivo..

É que eu uso um programa externo pra fazer isso e mais cedo ou mais tarde surgirá uma nova versão de windows e esse bicho vai parar de funcionar...

Problemas na acentuação no harbour

Enviado: 26 Jun 2012 10:25
por Vlademiro
Valeu mesmo

Funcionou perfeitamente !. :))

Problemas na acentuação no harbour

Enviado: 26 Jun 2012 16:48
por Imatech
Olá Lugab !

Acredito que exista hb_translate no xH

Código: Selecionar todos


hb_translate( cString, "UTF8", "PLWIN")   //  string from UTF-8 to ANSI

hb_translate( cString, "PLWIN", "UTF8")   //  reverse

Caso contrario irá encontrar vasto material para essa tarefa no projeto QT4xHB
http://www.magsoftinfo.com.br/blogdomag/?tag=qt4xhb
http://www.marcosgambeta.wordpress.com/ ... -graficas/
http://www.harbourqt.wordpress.com

Problemas na acentuação no harbour

Enviado: 27 Jun 2012 00:03
por lucimauro
Boa noite. a todos

Eu tambem to com o memso problema na acentuacao que aparece depois fica caracteres estranhos.
ai coloquei REQUEST HB_SETCODEPAGE_UTF8EX so que dar erro, sera que to faltando algo?

Problemas na acentuação no harbour

Enviado: 27 Jun 2012 07:43
por Toledo
lucimauro escreveu:ai coloquei REQUEST HB_SETCODEPAGE_UTF8EX so que dar erro
O correto é...
jovemxxx escreveu:REQUEST HB_CODEPAGE_UTF8EX
Abraços,

Problemas na acentuação no harbour

Enviado: 27 Jun 2012 09:33
por lucimauro
Obrigado por responder Toledo;

Eu errei na hora de escreve aqui, na funcao que esta no meu codigo é:
REQUEST HB_CODEPAGE_UTF8EX ( undefined reference ) este é o erro que ta dando.

Estou compilando com a mingw.

Problemas na acentuação no harbour

Enviado: 27 Jun 2012 10:30
por lugab
Pessoal, e quando o compilador for XHB, em vez de
REQUEST HB_CODEPAGE_UTF8EX
usa o que ?

Problemas na acentuação no harbour

Enviado: 27 Jun 2012 11:56
por Imatech
Olá Lucimauro !

Esta usando que versão do Harbour ?

Problemas na acentuação no harbour

Enviado: 27 Jun 2012 12:08
por Imatech
Olá Lugab !


UTF-8 é um tipo de formato especial compatível com ASCII, para a representação de qualquer caractere, em qualquer idioma. Acho que resolveram adotar esse padrão tendo em vista os caracteres acentuados que existem no nosso idioma. Sendo assim, um caractere acentuado teria não apenas 1, mas 2 bytes. Mas UTF-8 pode ter, salvo engano, até 4 bytes.

No xHarbour 1.1.0 foi criada a função para converter texto puro para UTF8:

HB_StrToUTF8( cStr ) e HB_UTF8ToStr( cUtf8 )

Ex:

Código: Selecionar todos

REQUEST HB_CODEPAGE_PTISO
REQUEST HB_CODEPAGE_PT850

Proc main()

local cStr, cAsc, cUtf8

HB_SETCODEPAGE( "PT850" )

cStr := "Isto é um teste de conversão."

cUtf8 := hb_strToUTF8( cStr )

cAsc := hb_UTF8ToStr( cUtf8 )

? cStr
? cUtf8
? cAsc


Créditos: Farley (Forum FiveWin)

Problemas na acentuação no harbour

Enviado: 28 Jun 2012 16:49
por lugab
Legal, Ronaldo, gostei. Essa função converte linha a linha, e é fácil, sem mistérios

Entretanto, salvo engano,os arquivos padrão UTF8 aprsentam uma série de 4 (?) caracteres
malucos que são gravados no começo do arquivo, antes da primeira linha, e o arquivo que resulta das linhas convertidas (uma a uma) não apresenta essas 4 tranqueiras

Ja convertendo o arquivo inteiro pelo programa externo STR2UTF8.EXE as tranqueiras aparecem e o programa do sefaz lê numa boa...

Vou submeter o convertido linha-a-linha , pra ver o comportamento do programa do sefaz.

Problemas na acentuação no harbour

Enviado: 28 Jun 2012 18:32
por JoséQuintas
Fui pelo lado prático: bloqueio qualquer caractere diferente no sistema.
Pra nota fiscal eletrônica, por enquanto só converti o & (ê comercial, ou macro do clipper).
Tá autorizando tudo numa boa na Fazenda, sendo que o Xml é direto do sistema.
Complicar pra ter mais problemas, melhor bloquear de uma vez, que funciona sempre.