Olá Evaldo,
evaldowl escreveu:só que estou com problemas em alguns caracteres especiais , o sql nao reconhece , caracteres de pesos e mediads por exemplo
Evaldo, creio que não seja o problema de codificação, acho que pode ser outro, pelo seguinte: Se você diz que seu problema está principalmente com os campos de pesos e medidas, Mesmo que eles não sejam Numéricos, acho que são Números tipo caracteres, e neste caso não altera nada em UTF8.
Apenas variáveis textos com acentuação (caracteres especiais), é que fazem diferença, em relação a outras codificações e Unicode. No caso do UTF8 por exemplo, enquanto Ansi e OEM usam 2 bytes nos caracteres especiais, o UTF8 usa 4 bytes.
Para passar um DBF em OEM para UTF8 (não use se o DBF for Ansi), você pode usar o exemplo abaixo. Faça cópia do DBF antes, ok?:
Function Main()
Local x, cArquivoDBF := "Nome do arquivo DBF"
Private cCampo, cConteudo
Use ( cArquivoDBF ) Exclusive New
Clear Screen
While !Eof()
@ 10, 25 Say "Convertendo Registro => " + Str( RecN() )
For x=1 To FCount()
cCampo := Field( x )
If ValType( &cCampo. ) = "C"
cConteudo := Hb_StrToUTF8( &cCampo. )
Replace &cCampo. With cConteudo // salva o campo
EndIf
Next
Skip
EndDo
Return Nil