ANSI to UTF-8

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

Moderador: Moderadores

Avatar do usuário
clodoaldomonteiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 821
Registrado em: 30 Dez 2006 13:17
Localização: Teresina-PI
Contato:

ANSI to UTF-8

Mensagem por clodoaldomonteiro »

Boas amigos.

Tenho um projeto em xHarbour versão 1.00 e preciso converter String ANSI para UTF-8.
Algum dos amigos poderia me ajudar com uma rotina em C, conforme exemplo abaixo:

Código: Selecionar todos

   #include "hbapi.h"
   HB_FUNC( STR2UTF8 )
   }
   const char * psz;
   void * hStr = hb_parstr_utf8( 1, &psz, NULL );
   hb_retc( psz );
   hb_strfree( hStr );
   }
Esta de cima não funciona, pois é para xHarbour 1.2.3 e tem que incluir o arquivo hbapistr.h.

Desde já agradeço a ajuda.
At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
Avatar do usuário
rubens
Colaborador
Colaborador
Mensagens: 1520
Registrado em: 16 Ago 2003 09:05
Localização: Nova Xavantina - MT

ANSI to UTF-8

Mensagem por rubens »

Boa tarde...

No harbour tem
hb_StrToUTF8()

já viu se no xHarbour não tem ?
"Eu e minha casa servimos ao Senhor e você ???"
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

ANSI to UTF-8

Mensagem por Kapiaba »

Código: Selecionar todos

UTF8

request HB_CODEPAGE_UTF8

http://forums.fivetechsupport.com/viewtopic.php?f=3&t=20561&p=109474&hilit=utf8#p109474

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

HB_StrToUTF8( cStr ) e HB_UTF8ToStr( cUtf8 )

Exemplo:


REQUEST HB_CODEPAGE_PTISO
REQUEST HB_CODEPAGE_PT850

FUNCTION Acentuacao()

   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

RETURN NIL
Avatar do usuário
clodoaldomonteiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 821
Registrado em: 30 Dez 2006 13:17
Localização: Teresina-PI
Contato:

ANSI to UTF-8

Mensagem por clodoaldomonteiro »

Depois de muito tempo, voltando para agradecer a ajuda e contribuir um pouco mais.

Fiz a função abaixo, em xHarbour (versão de 2024 xHarbour.org), para converter um arquivo de qualquer CodPage em UTF8.
Mesmo o tópico falando de ANSI para UTF8, não importa a CodePge que vc esteja, OEM ou ANSI, a função hb_strToUTF8() vai ajustar os caracteres acentuados de qualquer um para UTF8.

Código: Selecionar todos

#include "fileio.ch"

Function File2Utf8(cFileOrigem, cFileDestino)
   Local r := .t., mString, mHandle, mUtf8

      mString  := MemoRead( cFileOrigem )
      mUtf8    := hb_strToUTF8( mString )
      MHANDLE := FCreate(cFileDestino, FC_NORMAL )
      FWrite(MHANDLE, mUtf8)
      FClose(MHANDLE)

   Return r

Podendo vcs ajustarem, colocando avisos e tudo mais.
Abraços.
At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
Responder