PROBLEMA: A variável ASP na caixa de texto HTML está truncado

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 307406
Aviso de Isenção de Responsabilidade sobre Conteúdo do KB Aposentado
Este artigo trata de produtos para os quais a Microsoft não mais oferece suporte. Por esta razão, este artigo é oferecido "como está" e não será mais atualizado.
Sintomas
Se você colocar uma variável de Active Server Pages (ASP) em uma caixa de texto HTML , a variável pode ser truncada se ele contiver um espaço, aspas duplas ou ambos.
Causa
Esse problema ocorre porque o código ASP gera HTML inválido:
strSpace = <INPUT type="text" value=my space>strBoth = <INPUT type="text" value=I'm 5'-10" tall>				
por design, se o valor não está entre aspas duplas, HTML assume que o primeiro espaço que ele encontra representa o fim do valor e que o texto a seguir representa outra marca. No código de exemplo anterior, HTML pressupõe que as marcas de valor terminar em "Meu" e "Eu sou o" e HTML ignora "espaço", "5 '-10" "e"alto"como marcas inválidas.
Resolução
Para resolver esse problema, encapsular a variável ASP no método Server.HTMLEncode e aspas duplas. Para obter mais informações, consulte a seção "Mais informação".
Mais Informações
O código a seguir reproduz esse comportamento:
<HTML>ASP Variables: <br><%strSpace = "my space"strDblQuote = "my""doublequote"strBoth = "I'm 5'-10"" tall"Response.Write "strSpace = " & strSpaceResponse.Write "<br>strDblQuote = " & strDblQuoteResponse.Write "<br>strBoth = " & strBoth%><p>HTML Text Boxes:<br>strSpace = <INPUT type="text" value=<%=strSpace%>><br>strDblQuote = <INPUT type="text" value=<%=strDblQuote%>><br>strBoth = <INPUT type="text" value=<%=strBoth%>></HTML>				
as variáveis ASP strSpace e strBoth são truncadas nas caixas de texto HTML . No entanto, observe que a variável strDblQuote não será truncada.

Resolução 1: Corrigir o strSpace variável somente

Para corrigir strSpace , coloque o valor entre aspas duplas da seguinte maneira:
strSpace = <INPUT type="text" value="<%=strSpace%>">strDblQuote = <INPUT type="text" value="<%=strDblQuote%>">strBoth = <INPUT type="text" value="<%=strBoth%>">				
Embora esta solução corrige strSpace , ele trunca strDblQuote . Aspas duplas dentro variável strDblQuote foi originalmente interpretada corretamente como parte do valor; agora é interpretado como o final do valor porque ele é a primeira aspas que HTML encontra após as aspas duplas inicial.

Além disso, a variável strBoth agora será truncada por uma razão diferente. Originalmente, o primeiro espaço foi interpretado como o final do valor; agora, aspas duplas é interpretada como o final do valor:
strSpace = <INPUT type="text" value="my space">strDblQuote = <INPUT type="text" value="my"doublequote">strBoth = <INPUT type="text" value="I'm 5'-10" tall">				

Resolução 2: Corrigir todos os três variáveis

Para corrigir tanto strDblQuote strBoth sem truncando strSpace , coloque as variáveis no método Server.HTMLEncode , bem como entre aspas duplas. Por exemplo:
strSpace = <INPUT type="text" value="<%=Server.HTMLEncode(strSpace)%>">strDblQuote = <INPUT type="text" value="<%=Server.HTMLEncode(strDblQuote)%>">strBoth = <INPUT type="text" value="<%=Server.HTMLEncode(strBoth)%>">				
essa correção gera HTML válido para todos os três variáveis:
strSpace = <INPUT type="text" value="my space">strDblQuote = <INPUT type="text" value="my&quot;doublequote">strBoth = <INPUT type="text" value="I'm 5'-10&quot; tall">				
Observação : essa solução ainda requer que você dispor os valores entre aspas duplas como na primeira solução; caso contrário, strSpace e strBoth são truncados.
Referências
Para obter informações adicionais, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
259352PROBLEMA: Server.HTMLEncode corrompe caracteres Unicode e dados de conjunto de caracteres de dois bytes

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 307406 - Última Revisão: 10/11/2001 09:02:00 - Revisão: 1.0

Microsoft Active Server Pages 4.0

  • kbmt kbaspobj kbprb KB307406 KbMtpt
Comentários