Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal, tenho um sistema de criar urls amigáveis e que são gravadas no banco de dados e depois em um arquivo sitemap.txt, a codificação das páginas estão como iso-8859-1 e estão salvas como ANSI, até aí tudo bem porque já testei em vários computadores o resultado da gravação e está gravando corretamente essas urls, mas uma coisa que me intriga é que ainda sim tem visitantes que clicam nos links e criam essas urls de forma errada, eu estive verificando no GoogleAnalytics que meu site recebe visitas do mundo inteiro e essas urls são gravadas na maioria quando é de madrugada aqui no Brasil, será que pode ser a codificação dos navegadores que visitam meu site? já testei até com Samrtfhone e outros celulares e está gravando certo, lembrando que o resultado é o mesmo usando codificação utf-8 e já usei até funções de codificação utf-8, segue abaixo como algumas urls estão sendo gravadas quando tem acentuação:
palaƒaƒa‚aƒaƒa‚a‚aƒaƒaƒa‚a‚aƒa‚a‚a¡cio-das-artes.html
palaƒaƒa‚aƒaƒa‚a‚a¡cio-das-artes.html
palaƒa¡cio-das-artes.html
pal¨¢cio-das-artes.html
palacio-das-artes.html
palácio das artes
s?o-louren?o-2003.html
sao-lourenco.html
são lourenço
com.-graaƒaƒa‚a§a-.html
com.-graca-e-paz.html
com. graça & paz
t?cnico-qu?mica-2012.html
tecnico-quimica.html
técnico química
padre-joi¿½o-botelho.html
padre-joaƒa£o-botelho.html
padre-joao-botelho.html
padre joão botelho
colaƒaƒa‚aƒaƒa‚a‚aƒaƒaƒa‚a‚aƒa‚a‚a©gio-staƒaƒa‚aƒaƒa‚a‚a‚aƒaƒa‚a‚aƒa‚a‚a.-antaƒaƒa‚aƒaƒa‚a‚aƒaƒaƒa‚a‚aƒa‚a‚a´nio.html
colaƒaƒa‚aƒaƒa‚a‚a©gio-staƒaƒa‚a‚aƒa‚a‚a.-antaƒaƒa‚aƒaƒa‚a‚a´nio.html
colaƒa©gio-sta‚a.-antaƒa´nio.html
colegio-st.-antonio.html
colégio St. antônio
com.-saƒaƒa‚aƒaƒa‚a‚aƒaƒaƒa‚a‚aƒa‚a‚a£o-lourenaƒaƒa‚aƒaƒa‚a‚aƒaƒaƒa‚a‚aƒa‚a‚a§o.html
com.-saƒaƒa‚aƒaƒa‚a‚a£o-lourenaƒaƒa‚aƒaƒa‚a‚a§o.html
com.-saƒa£o-lourenaƒa§o.html
com.-s?o-louren?o.html
si¿½o-loureni¿½o.html
com.-sao-lourenco.html
com. são lourenço
pit¨¢goras.html
pit?goras.html
pitaƒa¡goras.html
pitagoras.html
pitágoras
inf¨®rium.html
inforium.html
infórium
logos¨®fico.html
logosofico.html
logosófico
flecha-ve¨culos.html
flecha-veiculos.html
flecha veículos
vejam onde está de azul é o correto e que grava certo, para testar entre
no site e clique em algum link que tem acentos e verá que está tudo certo, é isso
que me intriga, existe variações para a mesma palavra, se alguém me der uma resposta
do porquê talvez eu possa encontrar um caminho mesmo que seja um replace completo
para caracteres ANSI que eu acho que pode ser a solução.
Amigo Xan,
eu já alterei todas páginas para utf-8 e assim como você citou e também usando iso-8895-1 e não funcionou, o problema pode ser no arquivo que grava o nome da url, segue abaixo o arquivo completo:
<%
Response.AddHeader "Content-Type", "text/html; charset=iso-8859-1"
Response.AddHeader "Pragma", "no-cache"
response.Charset="iso-8859-1"
ProdID = Request.QueryString("produto")
strName = Request.QueryString("camiseta")
strSURL = Request.QueryString("URL")
strsessao = Request.QueryString("sessao")
impeq = Request.QueryString("impeq")
camiseta = Request.QueryString("camiseta")
msgdescricao = Request.QueryString("descricao")
site = "http://www.meusite.com/"
nome = replace(TirarAcento(strName)," ","+")
sessao = "camisetas"
titulo = nome&".html"
link = strSURL&"&camiseta="&camiseta&"&descricao="&msgdescricao
Set xmlhttp = Server.CreateObject("Microsoft.XMLHTTP")
xmlhttp.Open "GET",link, False
xmlhttp.setRequestHeader "ContentType","text/html"
xmlhttp.setRequestHeader "charset","iso-8859-1"
xmlhttp.setRequestHeader "Encoding","iso-8859-1"
xmlhttp.Send
tudo = xmlhttp.ResponseText
codigo = Server.HTMLEncode(tudo)
Set FSO = Server.CreateObject("Scripting.FileSystemObject")
pagina = sessao&"/"&titulo
caminho = Server.MapPath(pagina) 'especifique aqui o caminho onde ficará/está o TXT
Set GRAVAR = FSO.CreateTextFile(caminho,true)
'Foi criado o objeto e logo após busca o txt em caminho para gravar, se não achar, vai cria-lo (por causa da marcação TRUE)
function htmlspecialchars_decode(someString)
htmlspecialchars_decode = replace(replace(replace(replace(someString, "&", "&"), ">", ">"), "<", "<"), """, """")
end function
gravar.write htmlspecialchars_decode(codigo)
gravar.close
conteudo = site&pagina
Set sitemaps = abredb.Execute("SELECT * FROM sitemaps WHERE url='"& conteudo &"';")
if sitemaps.eof and sitemaps.bof then
conteudo_sitemap = conteudo
sitemaps = "INSERT INTO sitemaps (url) VALUES ('"&conteudo_sitemap&"')"
abredb.execute(sitemaps)
Set FSO = Server.CreateObject("Scripting.FileSystemObject")
caminho_sitemap = "C:\sitemap2.txt"
'O parâmetro forReading é utilizado somente para leitura.
Const forReading = 1, forWriting = 2, forAppending = 8
'Instancia o objeto FSO.
Set Fso = CreateObject("Scripting.FileSystemObject")
'Abre o arquivo com o método OpenTextFile.
Set ArqTxt = Fso.OpenTextFile(caminho_sitemap,8,True)
'Arquivo aberto, escreve no arquivo
ArqTxt.WriteLine conteudo_sitemap
'Fecha o arquivo com o método Close.
ArqTxt.Close
'Destrói o objeto. Set ArqTxt = nothing
else
conteudo = conteudo
end if
sitemaps.close
sitemaps.nothing
Response.Redirect pagina
%>
o servidor é Windows Server 2012 64 bits e IIS8 , e tive muitos outros problemas com alguns componentes que eu usava.
qual editor vc usa ?
vai ter que mudar a CODIFICAÇÃO DE CARACTERES UTF-8 em TODOS os arquivos. e adicione a meta
<meta http-equiv="content-type" content="text/html; charset=utf-8" /> se ficar em UTF-8
ou
<meta http-equiv="Content-Type" content="text/html;1" charset="iso-8859-1" />
para iso-8859-1
mas ter´[a que mudar a codificação no seu editor
amigo Xan, eu coloquei um replace para remover acentos e eu acho que resolveu, obrigado!
Beleza....
qualquer coisa estamos aí...
/applications/core/interface/imageproxy/imageproxy.php?img=https://scontent-b-mia.xx.fbcdn.net/hphotos-xpa1/t1.0-9/10579967_770294933014305_7246077632910014508_n.jpg&key=bf7d94740c33f09d2a5e9e5e6fcdd2a217321394f656c86cc800c63dfb1bd738" alt="10579967_770294933014305_724607763291001" />
mude para UTF-8
Mude o head da página que solicita os dados para que ele fique assim
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
Na página que responde os dados colocar isso antes do retorno co conteúdo (logo no topo):
<%
Response.AddHeader "Content-Type", "text/html; charset=utf-8"
Response.AddHeader "Pragma", "no-cache"
response.Charset="utf-8"
%>