Remover Acentos na exportação de texto

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

Moderador: Moderadores

Marcio_Carneiro
Usuário Nível 2
Usuário Nível 2
Mensagens: 70
Registrado em: 07 Abr 2008 15:37
Localização: Santo Antônio de Pádua - RJ

Remover Acentos na exportação de texto

Mensagem por Marcio_Carneiro »

Olá, amigos

Já fiz o dever de casa e pesquisei no forum, sobre o assunto acima

Já baixei os programas exemplos: converte.prg/remacent.prg já disponibilizado por colegas.

Mas não está dando certo:

a string:PAPEL HIGIÊNICO CARINHO PCT. ÇICA Ç PERF

tem como resposta:
PAPEL HIGIˆNICO CARINHO PCT. €ICA € PERF

onde vemos que a conversão estão dando errado. O que posso estar fazendo errado?

Uma coisa que me encafifou, é que meu programa é console harbour, e os caracteres especiais e acentos, ficam perfeitos, mas quando exporta para um programa feito em fivewin, ficam com caracteres estranhos e dão erro na impressora fiscal. Ambos os arquivos são dbf. Fiquei curioso.

Agora, preciso converter meus textos para compatibilizar com o aplicativo PAF de um parceiro. Sempre funcionou, agora numa nova versão do aplicativo PAF/ECF tá dando erro. O parceiro alega que a nova dll da Bematech é que está dando chabu
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

Remover Acentos na exportação de texto

Mensagem por Kapiaba »

Código: Selecionar todos

      cDocXml = TIRA_ACENTUACAO( cDocXml )

      cDocXml = StrTran( cDocXml , "CorreCAo" , "Correcao" )

      nHandle:=Fcreate(cDestino+cFile)

      Fwrite(nHandle,cDocXml)
      FClose(nHandle)

      Ou,

      WNOME:= alltrim(TIRA_ACENTUACAO(CADCLIEN->CLIENTE))



FUNCTION TIRA_ACENTUACAO( cStr )

   local cStrNew := "", nX
   cAcentos := {"—","ƒ","Æ","Ç"," ","µ","…","·","‚","É","ê","ˆ","","Ò","í","Í","ó","¢","à","ä","å","“","â","ú","é","","š","ç","€","ã","Ã","á","Á","à","À","é","É","ê","Ê","í","Í","ó","Ó","õ","Õ","ô","Ô","ú","Ú","ü","Ü","ç","ù","AAO","§","¦","º","ª","€","‡","Ç","ç","'","`","ø","¡","Þ","×","Ø", chr(239)}
   cLetras  := {"U","A","A","A","A","A","A","A","E","E","E","E","E","E","I","I","O","O","O","O","O","O","O","U","U","U","U","C","C","A","A","A","A","A","A","E","E","E","E","I","I","O","O","O","O","O","O","U","U","U","U","C"," ","CAO",".",".",".",".","C","C","C","C","" ,"" ,".","I","I","I","I",    ""   }
   For nX := 1 TO LEN(cAcentos)
       cStrNew := StrTran(cStr, cAcentos[nX], cLetras[nX])
       cStr := cStrNew
   Next
Return( cStrNew )
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

Remover Acentos na exportação de texto

Mensagem por Jairo Maia »

Olá Pessoal,
Marcio_Carneiro escreveu:mas quando exporta para um programa feito em fivewin, ficam com caracteres estranhos e dão erro na impressora fiscal
Já tentou mudar a codificação antes de exportar para o FiveWin?:

Código: Selecionar todos

cString := Hb_OemToAnsi( cString )
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)
Marcio_Carneiro
Usuário Nível 2
Usuário Nível 2
Mensagens: 70
Registrado em: 07 Abr 2008 15:37
Localização: Santo Antônio de Pádua - RJ

Remover Acentos na exportação de texto

Mensagem por Marcio_Carneiro »

Deu certo Kapiaba, somente troquei uma letra que trocava espaços em brancos por A, no seu exemplo.

Jairo Maia, obrigado pela atenção. Já tinha tentado este recurso, não me lembro sera oemtoansi ou ansitoem, mas tinha dado errado.

Obrigado pela atenção de todos.

Mas fiquei na dúvida, por que um prg pode acentos/caracteres especiais e outro não?
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

Remover Acentos na exportação de texto

Mensagem por Kapiaba »

No seu MENU PRINCIPAL, fazes assim?

Código: Selecionar todos

REQUEST HB_LANG_PT
REQUEST HB_CODEPAGE_PT850

ANNOUNCE RDDSYS
REQUEST OrdKeyNo, OrdKeyCount, OrdCreate, OrdKeyGoto
REQUEST DBFCDX, DBFFPT
ANNOUNCE FPTCDX

FUNCTION MAIN()


    SET DATE BRITISH
    SET EPOCH TO 1950
    SET CENTURY ON
    SET SOFTSEEK OFF
    SET WRAP ON
    SETCANCEL( .F. )
    SET CONFIRM OFF
    SET DELETED ON
    SET ESCAPE OFF
    SET EXACT ON  // CONTROLA O :=, = e ==
    SET EXCLUSIVE OFF
    SET MULTIPLE OFF

    RDDSETDEFAULT("DBFCDX")

    IF ISEXERUNNING( CFILENAME( HB_ARGV( 0 ) ) )
       __Quit()
    ENDIF

    //->Defaults da Lingua Portuguesa do [x]Harbour
    HB_LANGSELECT( 'PT' )         // Default language is now Portuguese
    //->Como indexar corretamente campos acentuados Harbour/xHarbour
    //->Este recurso e valido para Harbour e xHarbour e requer a biblioteca
    //->CODEPAGE.LIB.
    HB_SETCODEPAGE( "PT850" )
Responder