Ir para conteúdo

POWERED BY:

Arquivado

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

desisto

[Resolvido] caracteres especiais

Recommended Posts

1º desculpa se ja houver um topico sobre a duvida, procurei mas nao era bem o assunto...

 

toda entrada de texto que vai ser gravada no banco precisa ter os caracteres tratados?

tenho um sistema de noticia e ta dando pau em palavras com plique -> d'agua

 

precisa tratar esse caracter e os acentos tb? áàõ...

 

o Server.UrlEncode funcionaria pra isso?

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entao... n averdade apenas o apostofo ( aspas simples ) e as aspas duplas é que precisa de tratamento...

 

Isso ocorre pq esses caracteres fazem parte de instruções SQL... e com isso se você passar eles em algum campo para ser inserido ou consultado no BD, a instrução da PAU..

 

O restante dos caracteres nao precisa...

 

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

<%
Function TratarCaracteres(Caracter)
	Caracter = Replace(Caracter, "'", "''")
	Caracter = Replace(Caracter, "__utmz=", "")
	Caracter = Replace(Caracter, "utmccn=(direct)", "")
	Caracter = Replace(Caracter, "SessionRIVERSIDE", "")
	Caracter = Replace(Caracter, "insert", "")
	Caracter = Replace(Caracter, "INSERT", "")
	Caracter = Replace(Caracter, "select", "")
	Caracter = Replace(Caracter, "SELECT", "")
	Caracter = Replace(Caracter, "drop","")
	Caracter = Replace(Caracter, "DROP","")
	Caracter = Replace(Caracter, "--","")
	Caracter = Replace(Caracter, "xp_","")
	Caracter = Replace(Caracter, "XP_","")
	Caracter = Replace(Caracter, "<", "<")
	Caracter = Replace(Caracter, ">", ">")
	
	TratarCaracteres = Caracter
End Function
%>

tratar caracteres de insersão!!

 

tratar acentos tem no fórum, procura æ que você achar!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Darkdemo depois de quase meia hora batendo cabeca eu me lembrei do '

ate entao achei que fosse o limite da tabela, o tipo...

 

Valeu Ted pelo cod

esse "DROP" é realmente necessario?

 

se tiver uma noticia:

policia prende jovem com drops achando que era arma

 

no login:

drope = pedro

tb nao vai poder

 

 

os acentos PRECISAM ser tratados ou é apenas recomendado

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

caso você esteja usando ACCESS o DROP é fundamental, mais se quizer retirar tudo beleza!!

sobre os acentos você pode usar o Server.HTMLEncode para quando cadastrar!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

uso mysql

 

é so usar texto = Server.HTMLEncode(texto)

 

fiz um replace pra trocar os acento e gravar no bd, mas ta retrornando:

&agrave;&aacute;

ele nao muda na hora de imprimir na tela?

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

mudou sim, foi erro meu no codigo

porem... :)

 

coloquei

Server.HTMLEncode("bla bla •")

• no teclado alt 0149

 

ele retornou assim o texto

no response.write texto: •

e no banco gravou assim: &#8226;

 

 

o HTMLEncode trata so acento e alguns caracteres ne

onde posso ver quais ele trata?

 

 

no caso eu teria que fazer com a funcao acima que você passou e tratar os caracteres ignorados?

HTMLEncode + TratarCaracteres

 

valeu pela paciencia :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

onde ver não sei... mais pesquise sobre tabela ASCII

 

o "Tratar Caracteres" você coloca só quando você fazer o login!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

delez, colocarei o Tópico como Resolvido mais qualquer dúvida tentarei ser mais direto, acho que dei muitas volta (hehehe, foi mau)!!

 

qualquer coisa posta æ

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa noite, procurei no fórum e o mais próximo que cheguei foi aqui...

 

 

 

GALERA ME DESCULPE AÍ, É EXATAMENTE COMO DESCRITO ACIMA. EU ERREI POQUE COLOQUEI O REPLACE ANTES DO REQUEST. CORRIGI O CÓDIGO ABAIXO.

 

 

Tenho um script asp que faz a pesquisa em uma tabela de palavras-chave:

A pessoa digita a palavra chave num formulário e este envia a variável SValue para o script onde ele monta a resposta e imprime.

O problema é que agora eu queria que ele trocasse os caracteres especiais por normais, uma vez que estas palavras chave estão sem caracteres especiais (estas palavras não são impressas), sendo assim, ao digitar "aço", ele encontra "aco".

 

Ted tentei usar sua função, mas creio que estrou fazendo erro:

 

 

******************************************************

 

 

 

<%

strFieldName = Request("Column")

strTableName = Request("Table")

strOrderByField = Request("OrderBy")

SValue = Request("SValue")

SValue = Replace(SValue, "ç", "c")

SValue = Replace(SValue, "á", "a")

SValue = Replace(SValue, "é", "e")

SValue = Replace(SValue, "í", "i")

SValue = Replace(SValue, "ó", "o")

SValue = Replace(SValue, "ú", "u")

SValue = Replace(SValue, "à", "a")

SValue = Replace(SValue, "ã", "a")

SValue = Replace(SValue, "õ", "o")

SValue = Replace(SValue, "ü", "u")

SValue = Replace(SValue, "â", "a")

SValue = Replace(SValue, "ê", "e")

SValue = Replace(SValue, "ô", "o")

SValue = Replace(SValue, "û", "u")

SType = Request("SType")

 

response.Write(replace(SValue,"ç","c"))

 

' For Loop To Move Through Search String, Counting Spaces, and

' Incrementing WordCounter By One At Each Occuranceh

For i = 1 to len(SValue)

If mid(SValue, i, 1) = " " Then

WordCounter = WordCounter + 1

End If

Next

 

' Now, We Add One To Include The First Word

WordCounter = WordCounter + 1

 

' Next We Dim Word As An Array, With The Maximum Number Of Words

' To Allow - In This Case, 100

Dim Word(100)

 

 

' Now, We Fill The Array With The Words

CurrentWord = 1

For i = 1 to len(SValue)

If mid(SValue, i, 1) = " " Then

CurrentWord = CurrentWord + 1

Else

Word(CurrentWord) = Word(CurrentWord) + mid(SValue, i, 1)

End If

Next

 

' Now Lets Build The SQL Statement Based On What Search Type (SType)

' Was Selected

 

' First Part Of SQL

SQL = "SELECT * FROM " & strTableName & " WHERE "

 

' For Loop To Concatenate SQL String Together

For i = 1 to WordCounter

If SType = "AllWords" Then

If i <> WordCounter Then

SQL1 = SQL1 & strFieldName & " LIKE '%" & Word(i) & "%' AND "

ElseIf i = WordCounter Then

SQL1 = SQL1 & strFieldName & " LIKE '%" & Word(i) & "%'"

End If

ElseIf SType = "AnyWord" Then

If i <> WordCounter Then

SQL1 = SQL1 & strFieldName & " LIKE '%" & Word(i) & "%' OR "

ElseIf i = WordCounter Then

SQL1 = SQL1 & strFieldName & " LIKE '%" & Word(i) & "%'"

End If

End If

Next

 

' Finishing Part Of SQL Statement.

if Len(strOrderByField) > 0 then

'We need to perform an ORDER BY!

SQL = SQL & SQL1 & " ORDER BY " & strOrderByField

Else

SQL = SQL & SQL1

End If

%>

 

<%

'Connect to our database. In this example I used the Northwind DSN

Set dbConn = Server.CreateObject("ADODB.Connection")

dbConn.Open "DSN=guia_pir"

 

'Create an explicit recordset object...

Set rsRecords = Server.CreateObject("ADODB.Recordset")

rsRecords.Open SQL, dbConn, 3

%>

 

<%

If Not rsRecords.EOF And Not rsRecords.BOF Then

'We have at least one record, so display it...

%>

 

 

*************************************************

 

 

Tentei também usar:

 

<% response.Write(replace(SValue,"ç","c"))%>

 

ele imprime "aco" mas tem 2 problemas:

Se colocar mais caracteres aqui, dá erro, e,

Não estou conseguindo o script fazer a requisição ao BD sem os caracteres.

 

 

Tem como fazer o SValue ir do formulário para o script já com os caracteres substituídos? (como ví uma vez num site onde mesmo o teclado em caixa baixa, ao escrever no form ele imprimia em caixa alta)

 

Uma luz será muito bem vinda!

 

GALERA ME DESCULPE AÍ, É EXATAMENTE COMO DESCRITO ACIMA. EU ERREI POQUE COLOQUEI O REPLACE ANTES DO REQUEST. CORRIGI O CÓDIGO ACIMA.

 

 

Att

Compartilhar este post


Link para o post
Compartilhar em outros sites

opa

desconfigurou a exibicao do topico, ficou texto em cima de texto

edita ai que nem da pra ver o seu codigo

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ready Desisto!!!

Bl!!!

 

Agora o problema é outro, e acredito que ele não foge do assunto deste tópico. Gostaria que o código acima fisesse a requisição ao BD apenas das palavras acima de 2 caracteres.

 

Exemplo: se no form eu pesquisar "casa de carnes" , o (SValue) deve mandar pesquisar a coluna do BD "casa carnes"

 

 

acontece que no código acima eu adicionei:

 

**********************************

 

SValue = Replace(SValue, "de", "")

SValue = Replace(SValue, "DE", "")

SValue = Replace(SValue, "para", "")

SValue = Replace(SValue, "PARA", "")

SValue = Replace(SValue, "p/", "")

SValue = Replace(SValue, "P/", "")

 

 

***********************************

 

Fiz isso tentando forçar a pesquisa omitindo estas palavras.

Mas acontece que não funfou.

Mandei imprimir o SValue e aparece "casa carnes"

mas o script não encontra.

 

Poderiam m ajudar! Agradeço!

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.