Acentos / exportacao

Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.

Moderador: Moderadores

cleudson
Usuário Nível 1
Usuário Nível 1
Mensagens: 10
Registrado em: 15 Ago 2009 22:33
Localização: Pernambuco

Acentos / exportacao

Mensagem por cleudson »

olá sempre que preciso exportar base de dados dbf para sistemas para sistemas graficos os acentos do clipper ficam com caracteres extranhos no novo banco de dados, sendo assim andei procurando uma funcao para tirar todos os acentos da base dbf encontrei um muito bom fiz uma pequena modificacao para tirar todos os acentos de todos os campos da tabela que sejam do tipo char. Estou enviando pra voces para quem necessitar usar.

Código: Selecionar todos

//================================================================//
// Funcao........: Remocao de acentuacao (REMACENT)
// Programador...: Marcos Antonio Gambeta
// Atualizacao...: Leomar Cleudson Costa
//                 Implementado para remover os acentos de toda tabela
//                 com campos tipo Char e pedir o nome da tabela
//                 15/08/2009 (vc pode incluir novos caracteres na funcao.          
// Contato.......: dicasdeprogramacao@yahoo.com.br
// Website.......: http://dicasprog.codigolivre.org.br
//================================================================//
// Linguagem.....: CA-Clipper 5.2/5.3
// Bibliotecas...:
// Plataforma....: DOS/Windows
//================================================================//
clear
ttab:=space(8)

@ 10,10 say "Tabela.:"
@ 10,19 get ttab pict '@!'
read
use (ttab) alias tab new
DBgoTop()

A=fcount()
for X=1 to A
    if type(field(X))="C"
       NOMECAMPO=field(X)
       DBgotop()
       while !eof()
         texto:=alltrim(&NOMECAMPO)
         texto:=remacent(texto)
         field->&NOMECAMPO:=texto
         skip
       end
    endif
next
@ 11,10 SAY 'Remocao de acentos concluida com sucesso '
return(.t.)
*
Function RemAcent ( cTexto )

// acento agudo
cTexto := StrTran( cTexto, " ", "a" )
cTexto := StrTran( cTexto, "‚", "e" )
cTexto := StrTran( cTexto, "¡", "i" )
cTexto := StrTran( cTexto, "¢", "o" )
cTexto := StrTran( cTexto, "£", "u" )
cTexto := StrTran( cTexto, "µ", "A" )
cTexto := StrTran( cTexto, "", "E" )
cTexto := StrTran( cTexto, "Ö", "I" )
cTexto := StrTran( cTexto, "à", "O" )
cTexto := StrTran( cTexto, "é", "U" )

// acento circunflexo
cTexto := StrTran( cTexto, "ƒ", "a" )
cTexto := StrTran( cTexto, "ˆ", "e" )
cTexto := StrTran( cTexto, "Œ", "i" )
cTexto := StrTran( cTexto, "“", "o" )
cTexto := StrTran( cTexto, "–", "u" )
cTexto := StrTran( cTexto, "¶", "A" )
cTexto := StrTran( cTexto, "Ò", "E" )
cTexto := StrTran( cTexto, "×", "I" )
cTexto := StrTran( cTexto, "â", "O" )
cTexto := StrTran( cTexto, "ê", "U" )

// til
cTexto := StrTran( cTexto, "Æ", "a" )
cTexto := StrTran( cTexto, "ä", "o" )
cTexto := StrTran( cTexto, "Ç", "A" )
cTexto := StrTran( cTexto, "å", "O" )
cTexto := StrTran( cTexto, "™", "O" )
cTexto := StrTran( cTexto, "Ž", "A" )
cTexto := StrTran( cTexto, "†", "A" )

// ce-cedilha
cTexto := StrTran( cTexto, "‡", "c" )
cTexto := StrTran( cTexto, "€", "C" )

// trema
cTexto := StrTran( cTexto, "", "u" )
cTexto := StrTran( cTexto, "š", "U" )

// crase
cTexto := StrTran( cTexto, "…", "a" )
cTexto := StrTran( cTexto, "Š", "e" )
cTexto := StrTran( cTexto, "", "i" )
cTexto := StrTran( cTexto, "•", "o" )
cTexto := StrTran( cTexto, "—", "u" )
cTexto := StrTran( cTexto, "·", "A" )
cTexto := StrTran( cTexto, "Ô", "E" )
cTexto := StrTran( cTexto, "Þ", "I" )
cTexto := StrTran( cTexto, "ã", "O" )
cTexto := StrTran( cTexto, "ë", "U" )

//outros caracteres
cTexto := StrTran( cTexto, "§", "." )
cTexto := StrTran( cTexto, "¦", "." )
cTexto := StrTran( cTexto, '"', ""  )

Return cTexto

---
Notas da Moderação (Maligno):
1) A mensagem foi editada apenas para a inserção das tags de indentação de código, a fim de facilitar a visualização do código. Por favor, no futuro, insira essas tags, mesmo em códigos mais simples.
2) O tópico foi movido da seção "CA-Clipper", uma vez que seu conteúdo diverge dos objetivos daquela seção, onde só podem constar mensagens que lancem ou discutam dúvidas técnicas.
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: Acentos / exportacao

Mensagem por Maligno »

Vide dica já publicada:
viewtopic.php?f=1&t=1560&start=0
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Responder