Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

fabinhosantos

Remover acentuação e substituir espaço em branco

Recommended Posts

Pessoal achei melhor abrir outro tópico já que a parte de isapi rewrite eu já resolvi...

 

Então, não estou conseguindo remover acentuação de uma string vinda do banco de dados.

 

PROBLEMA:

 

Gente, estou gerando meu sitemap dinamicamente mas não estou conseguindo remover acentos e caracteres especiais usando as funções abaixo:

 

 

Function RemoveAcentos(ByVal Texto)
   Dim ComAcentos
   Dim SemAcentos
   Dim Resultado
       Dim Cont
   'Conjunto de Caracteres com acentos
   ComAcentos = "ÁÍÓÚÉÄÏÖÜËÀÌÒÙÈÃÕÂÎÔÛÊáíóúéäïöüëàìòùèãõâîôûêÇç'"
   'Conjunto de Caracteres sem acentos
   SemAcentos = "AIOUEAIOUEAIOUEAOAIOUEaioueaioueaioueaoaioueCc-"
   Cont = 0
   Resultado = Texto
   Do While Cont < Len(ComAcentos)
       Cont = Cont + 1
       Resultado = Replace(Resultado, Mid(ComAcentos, Cont, 1), Mid(SemAcentos, Cont, 1))
   Loop
   RemoveAcentos = Resultado
End Function

Function RemoveCaracteresEspeciais(Palavra) 
Dim I 
Dim LCA(47) 
Dim LSA(47) 
'aqui vamos por o que queremos retirar
LCA(0) = "º" 
LCA(1) = "ª" 
LCA(2) = "°" 
LCA(3) = "'" 
LCA(4) = "¨" 
LCA(5) = "¬" 
LCA(6) = "&" 
LCA(7) = "°" 
LCA(8) = "¹" 
LCA(9) = "|" 
LCA(10) = "²" 
LCA(11) = "+" 
LCA(12) = "." 
LCA(13) = "/" 
LCA(14) = "!" 
LCA(15) = "@" 
LCA(16) = "#" 
LCA(17) = "$" 
LCA(18) = "%" 
LCA(19) = "(" 
LCA(20) = ")" 
LCA(21) = "~" 
LCA(22) = "^" 
LCA(23) = "{" 
LCA(24) = "}" 
LCA(25) = "]" 
LCA(26) = "[" 
LCA(27) = "\" 
LCA(28) = ";" 
LCA(29) = ":" 
LCA(30) = ">" 
LCA(31) = "<" 
LCA(32) = "*"
LCA(33) = "="
LCA(34) = " "
'aqui vamos por o que queremos no lugar de cada no código original está para remover os acentos. aqui eu mudei para retirar numeros e caracteres especiais.
LSA(0) = "" 
LSA(1) = "" 
LSA(2) = "" 
LSA(3) = "" 
LSA(4) = "" 
LSA(5) = "" 
LSA(6) = "" 
LSA(7) = "" 
LSA(8) = "" 
LSA(9) = "" 
LSA(10) = "" 
LSA(11) = "" 
LSA(12) = "" 
LSA(13) = "" 
LSA(14) = "" 
LSA(15) = "" 
LSA(16) = "" 
LSA(17) = "" 
LSA(18) = "" 
LSA(19) = "" 
LSA(20) = "" 
LSA(21) = "" 
LSA(22) = "" 
LSA(23) = "" 
LSA(24) = "" 
LSA(25) = "" 
LSA(26) = "" 
LSA(27) = "" 
LSA(28) = "" 
LSA(29) = "" 
LSA(30) = "" 
LSA(31) = "" 
LSA(32) = ""
LSA(33) = ""
LSA(34) = "-"
For i= 0 to UBound(LCA) 
       Resultado = Replace(Palavra,LCA(i),LSA(i)) 
       If Palavra <> Resultado Then 
               Palavra = "" 
               Palavra = Resultado 
       End IF 
Next 
RemoveCaracteresEspeciais = Resultado 
End Function 

nova_url = RemoveCaracteresEspeciais(RemoveAcentos(RS("titulo"))) & ".html"

 

Fiz um teste assim e funcionou:

frase = "São João"
nova_url = RemoveCaracteresEspeciais(RemoveAcentos(frase)) 

Mas uma string vindo do banco de dados não remove...

 

A única coisa que estou conseguindo é substituir espaço em branco por - entre as palavras.

 

OBS:

1- eu já tentei também com outras funções que achei pela net mas não remove os acentos...

 

2- minha página está definida como: response.Charset="utf-8", tem alguma coisa haver?

 

Se alguém puder me ajudar eu agradeço...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode usar replaces para substituir os caracteres especiais por letras simples. Ex: "á"por "a" e atribuir este replace na chamada do recordset ao seu bd.

 

<%
palavra=replace(rs("tabela"), "á","a")
%>

e por ai vai...

dai você pode montar um arquivo so de replaces e entao toda vez que precisar da um include...

 

Com certeza, vao postar algo melhor...

Sou leigo com essas coisas ainda, mas espero ter te dado uma luz..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ve se esse metodo ajuda... qualquer coisa melhora ele....

 

 


Function RemoveAcentosCaracteres(str)

	Set regex = new RegExp
	regex.Global = true
	regex.IgnoreCase = false


	'Conjunto de Caracteres com acentos
	ComAcentos = "ÁÍÓÚÉÄÏÖÜËÀÌÒÙÈÃÕÂÎÔÛÊáíóúéäïöüëàìòùèãõâîôûêÇç'"
	'Conjunto de Caracteres sem acentos
	SemAcentos = "AIOUEAIOUEAIOUEAOAIOUEaioueaioueaioueaoaioueCc-"

	For i = 0 To Len(ComAcentos)
		regex.Pattern = mid(ComAcentos,i+1,1)			
		str = regex.Replace(str,mid(SemAcentos,i+1,1))
	Next

	regex.Pattern = "\W"
	str = regex.replace(str,"")
	RemoveAcentosCaracteres = str

End Function


Compartilhar este post


Link para o post
Compartilhar em outros sites

o resultado foi este:

 

Ficou assim: IFIoIrIrIIIMIaIiIsI

 

O registro vindo do banco-de-dados seria: Forró Mais

 

Com outras funções eu só conseguia remover se fosse de uma string diretamente na página mas do banco de dados não consigo.

 

 

Ve se esse metodo ajuda... qualquer coisa melhora ele....

 

 


Function RemoveAcentosCaracteres(str)

	Set regex = new RegExp
	regex.Global = true
	regex.IgnoreCase = false


	'Conjunto de Caracteres com acentos
	ComAcentos = "ÁÍÓÚÉÄÏÖÜËÀÌÒÙÈÃÕÂÎÔÛÊáíóúéäïöüëàìòùèãõâîôûêÇç'"
	'Conjunto de Caracteres sem acentos
	SemAcentos = "AIOUEAIOUEAIOUEAOAIOUEaioueaioueaioueaoaioueCc-"

	For i = 0 To Len(ComAcentos)
		regex.Pattern = mid(ComAcentos,i+1,1)			
		str = regex.Replace(str,mid(SemAcentos,i+1,1))
	Next

	regex.Pattern = "\W"
	str = regex.replace(str,"")
	RemoveAcentosCaracteres = str

End Function


Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.