Página 1 de 1
caracteres acentuados
Enviado: 24 Nov 2014 06:32
por clodoaldomonteiro
Volto aqui novamente para pedir a seguinte ajuda:
É possivel fazer busca em um dbf com caracteres acentuados, em que o sistema entenda que a letra "É" igual a "E"?
caracteres acentuados
Enviado: 24 Nov 2014 09:41
por Jairo Maia
Olá Clodoaldo,
Usei estas dicas (não se preocupe com o nome dos tópicos, servem para todas situações):
indice com harbour/minigui
Aqui a função RemoverAcentos:
Converte caracteres padrão DOS/OEM pra WIN/ANSI e vice-versa
caracteres acentuados
Enviado: 25 Nov 2014 10:10
por sambomb
Eu criei essa função para remover a acentuação, ela mantém o mesmo número de caracteres sendo válida na indexação, talvez te ajude
Código: Selecionar todos
****************************************************************************
function RemAce(cAux, lOem, lUpper)
****************************************************************************
*
* Remove acentuação
* Parametros: cAux, lOem, lUpper
* Retorno: cResult
*
* Autor: Samir
* 30/7/2009 - 13:57:52
*
****************************************************************************
Local i := 0, cCharA := "", cCharS := "", nPos := 0
local cListaAAnsi := 'ãâáàéèêíìîóòõôúùûçÃÂÁÀÉÈÊÍÌÎÓÒÕÔÚÙÛÇ'
local cListaSAnsi := 'aaaaeeeiiioooouuucAAAAEEEIIIOOOOUUUC'
local cListaAOem := 'ƃ …ˆ‚Š¡Œ“䢕£—–‡¶Çµ·ÒÔÖÞ×àãåâéëê€'
local cListaSOem := 'aaaaeeeiiioooouuucAAAAEEEIIIOOOOUUUC'
If ValType(lUpper) = "U"
lUpper := .F.
end
If ValType(lOem) = "U"
lOem := .F.
end
//-- Desabilitar Oem ou Ansi de acordo com o parâmetro
If !lOem
cListaAOem := ""
cListaSOem := ""
else
cListaAAnsi := ""
cListaSAnsi := ""
end
//-- Analisar todos caracteres
for i := 1 to Len(cAux)
//-- Verificar se é um caracter acentuado ANSI
nPos := At( SubStr(cAux , i , 1) , cListaAAnsi )
if nPos > 0
//-- Pegar o caracter equivalente não acentuado
cCharA := SubStr(cListaAAnsi , nPos , 1)
cCharS := SubStr(cListaSAnsi , nPos , 1)
cAux := StrTran(cAux, cCharA, cCharS)
end
//-- Verificar se é um caracter acentuado OEM
nPos := At( SubStr(cAux , i , 1) , cListaAOem )
if nPos > 0
//-- Pegar o caracter equivalente não acentuado
cCharA := SubStr(cListaAOem , nPos , 1)
cCharS := SubStr(cListaSOem , nPos , 1)
cAux := StrTran(cAux, cCharA, cCharS)
end
end
//-- Aplicar Upper de acordo com o parâmetro
If lUpper
cAux := Upper(cAux)
end
Return cAux
/*------------------------------------------------------------------------*/