Ir para conteúdo

Arquivado

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

mundoweb

Problema de acentuação com Uploadify no ASP

Recommended Posts

Olá pessoal, depois de muito quebrar cabeça e sem conseguir resolver meu problema, decidi pedir ajuda aqui com vocês. Uso o uploadify com ASP e tudo funfa as mil maravilhas, mas somente um problema está acontecendo... a acentuação no filename não aceita caractere especial e sobe o arquivo com interrogações dentro de um losango.

 

Pra adiantar a ajuda, segue as tentativas:

 

- UTF-8 em todos os arquivos;

- response.charset = "utf-8";

- Função de replace em cada caracter;

 

enfim... subo o arquivo e renomeio com numeros, mas como desejo guardar o nome original do arquivo no banco de dados, aí ta o problema. Já entra no banco com as tais interrogações. Ou seja, está no uploadify o problema.

 

Ah mais uma coisa.... garanto que o banco está gravando com acentuação normal.

 

Socorro!!

 

Alguém pode ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não é para ter caracteres mesmo, mas sabemos como é cliente, o ideial realmente (como 99% dos dev fazem) é renomear o arquivo mesmo, você pode ver se o problema está no registro BOM da página:

 

Segue a configuração BOM para Sublime:

http://stackoverflow.com/questions/21289157/set-encoding-of-file-to-utf8-with-bom-in-sublime-text-3

 

Segue a configuração BOM para Dreamweaver:

http://stackoverflow.com/questions/5378522/utf-8-without-bom

 

Mas se está tão apegado a guardar o nome do arquivo (para mostrar ao cliente na tela de front-end) tente usar o charset da página para lhe ajudar. Segue link com a ajuda.

http://stackoverflow.com/a/21914278

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi Ted, primeiro agradecer a atenção e dizer que sou fã e admirador do seu trabalho. De fato, esqueci de falar que eu já renomeio os arquivos com somente número para efeito de controle e organização, no entanto a minha insistência de guardar o nome original do arquivo no banco é para mostrar ao cliente mesmo. O único problema é que o filename ao entrar no código, não faz diferença entre os caracteres acentuados, ou seja, tanto faz ser um "á" ou um "ç" que ele converte todos e qualquer caractere para este símbolo aqui � (uma interrogação dentro de um losango).

Daí o máximo que consigo é dar um replace retirando este símbolo, pois se são todos iguais. Desse modo um arquivo de nome "Ação", se apresenta ao cliente como "Ao". Imagina só rs

 

Tentei o registro BOM mas sem sucesso. E o charset (abaixo) já tinha tentado em todas páginas envolvidas no upload.

<%@Language="VBScript" CodePage = 65001 %>
<%
Response.CharSet = "UTF-8"
Response.CodePage = 65001
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu cara, estamos ai!

 

Caramba, complicado, mas o charset e o BOM são em duas páginas, uma na página do formulário e outra na página ASP para receber esses dados, eu tinha problemas antes iguais aos seus, ou era a ausência ou presença do BOM.

 

Em ASP eu sempre usava minhas páginas com ISO:

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

E na página do ASP usava puro:

<%@ Language="VBScript" %>

Experimenta isso, não custa tentar

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi Ted, o charset já tinha testado e não tinha dado certo, daí experimentei o VBscript puro como recomendou e infelizmente também não rolou.

De qualquer modo, resolvi o problema convertendo os arquivos ASP envolvidos no uploadify para ANSI e então gerou os códigos diferentes para cada caractere acentuado, ou seja, dessa forma, puder dar um replace numa lista de codes mais usados. Não é a solução ideal, mas tira do sufoco para atender a clientes ansiosos.

 

Aproveito para deixar aqui pra ajudar alguém que também use o Uploadify com ASP. Segue:

 

nomeOriginal = objUp.fields("Filename").value

nomeOriginal = replace(nomeOriginal,"'","''")
nomeOriginal = replace(nomeOriginal,"á","á")
nomeOriginal = replace(nomeOriginal,"é","é")
nomeOriginal = replace(nomeOriginal,"ó","ó")
nomeOriginal = replace(nomeOriginal,"ú","ú")

nomeOriginal = replace(nomeOriginal,"ã‰","É")
nomeOriginal = replace(nomeOriginal,"Ó","Ó")
nomeOriginal = replace(nomeOriginal,"Ú","Ú")

nomeOriginal = replace(nomeOriginal,"ç","ç")
nomeOriginal = replace(nomeOriginal,"Ç","Ç")

nomeOriginal = replace(nomeOriginal,"À","À")

nomeOriginal = replace(nomeOriginal,"â","â")
nomeOriginal = replace(nomeOriginal,"Â","Â")
nomeOriginal = replace(nomeOriginal,"ê","ê")
nomeOriginal = replace(nomeOriginal,"íŠ","Ê")
nomeOriginal = replace(nomeOriginal,"ô","ô")
nomeOriginal = replace(nomeOriginal,"Ô","Ô")

nomeOriginal = replace(nomeOriginal,"ª","ª")
nomeOriginal = replace(nomeOriginal,"º","º")

nomeOriginal = replace(nomeOriginal,"õ","õ")
nomeOriginal = replace(nomeOriginal,"Õ","Õ")

nomeOriginal = replace(nomeOriginal,"ü","ü")
nomeOriginal = replace(nomeOriginal,"Ãœ","Ü")

nomeOriginal = replace(nomeOriginal,"ã","ã")
nomeOriginal = replace(nomeOriginal,"Ã","Ã")

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, ótimo que resolveu mas quando tiver um tempo, tenta verificar tudo, faz um pente fino para ver se o formulário esta passando certo, se na pagina onde recebe os dados está imprimindo ok, se realmente o banco está correto, veja mesmo pois isso foi só o campo de arquivo, pense se fosse um formulário com vários campos? Complicado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia Ted. Pois é, já tinha observado isso e fiz um pente fino... no formulário passa normal, pois se vê com a acentuação na barra de progresso do upload que por sinal vem da variável no Jquery; ou seja, o valor do objeto vai com a acentuação correta. Parece que a coisa toda ta quando passa pela classe do Upload. Acredito que ta especificamente no trecho abaixo:

Private Function CStrU(ByRef pstrANSI)

' Converts an ANSI string to Unicode
' Best used for small strings

Dim llngLength ' Length of ANSI string
Dim llngIndex ' Current position

' determine length
llngLength = LenB(pstrANSI)

' Loop through each character
For llngIndex = 1 To llngLength

' Pull out ANSI character
' Get Ascii value of ANSI character
' Get Unicode Character from Ascii
' Append character to results
CStrU = CStrU & Chr(AscB(MidB(pstrANSI, llngIndex, 1)))

Next

End Function
' ------------------------------------------------------------------------------
Private Function CStrB(ByRef pstrUnicode)

' Converts a Unicode string to ANSI
' Best used for small strings

Dim llngLength ' Length of ANSI string
Dim llngIndex ' Current position

' determine length
llngLength = Len(pstrUnicode)

' Loop through each character
For llngIndex = 1 To llngLength

' Pull out Unicode character
' Get Ascii value of Unicode character
' Get ANSI Character from Ascii
' Append character to results
CStrB = CStrB & ChrB(Asc(Mid(pstrUnicode, llngIndex, 1)))

Next

End Function

Compartilhar este post


Link para o post
Compartilhar em outros sites

É isso aí... apesar de já ter resolvido meu problema, de fato ainda fui atrás de mexer nas funções na tentativa de converter para UTF8, porém sem sucesso. Ainda ficarei de alerta pois ao meu ver, terá alguma brecha pra trabalhar com Uploaddify e ASP juntos.

 

Agradeço a atenção Ted e acho que podemos fechar o tópico, certo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

OU

 

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"
Response.Charset="ISO-8859-1" %>

Response.CharSet = "ISO-8859-1". E no cabeçalho do site coloque a meta tag <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />

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.