PRB: Variable ASP en el cuadro de texto HTML se trunca

Exención de responsabilidades de contenido KB retirado

Este artículo se refiere a productos para los que Microsoft ya no ofrece soporte técnico. Por tanto, el presente artículo se ofrece "tal cual" y no será actualizado.

Síntomas

Si coloca una variable de páginas Active Server (ASP) en un cuadro de texto HTML , la variable se puede truncar si contiene un espacio, comillas dobles o ambos.

Causa

Este problema se produce porque el código ASP genera código HTML no válido:

strSpace = <INPUT type="text" value=my space>
strBoth = <INPUT type="text" value=I'm 5'-10" tall>

Por diseño, si el valor no está encerrado entre comillas dobles, HTML supone que el primer espacio que encuentra representa el final del valor y que el texto siguiente representa otra etiqueta. En el código de ejemplo anterior, HTML supone que las etiquetas de valor acaban en "my" y "'m" y HTML omite el "espacio", "5' -10" "y"alto"como etiquetas no válidas.

Solución

Para resolver este problema, ajuste la variable ASP en el método Server.HTMLEncode y entre comillas dobles. Para obtener más información, consulte la sección "Más información".

Más información

El código siguiente reproduce este comportamiento:

<HTML>ASP Variables: <br>
<%
strSpace = "my space"
strDblQuote = "my""doublequote"
strBoth = "I'm 5'-10"" tall"
Response.Write "strSpace = " & strSpace
Response.Write "<br>strDblQuote = " & strDblQuote
Response.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>

Las variables ASP strSpace y strBoth se truncan en los cuadros de texto HTML . Sin embargo, tenga en cuenta que la variable strDblQuote no se trunca.

Solución 1: Corregir el strSpace Variable sólo

Para corregir strSpace, ajustar el valor entre comillas dobles:
strSpace = <INPUT type="text" value="<%=strSpace%>">
strDblQuote = <INPUT type="text" value="<%=strDblQuote%>">

strBoth = <INPUT type="text" value="<%=strBoth%>">

Aunque esta solución corrige strSpace, trunca strDblQuote. Las comillas dobles dentro de la variable strDblQuote originalmente se interpreta correctamente como parte del valor; Ahora se interpreta como el final del valor porque es la primera marca de comillas dobles que HTML se encuentra después de las comillas dobles iniciales.

Además, la variable strBoth se trunca ahora por un motivo diferente. Originalmente, el primer espacio se interpreta como el final del valor; Ahora, las comillas dobles se interpretan como el final del 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">

Resolución 2: Corregir todos los tres Variables

Para corregir strDblQuote y strBoth sin truncar strSpace, ajustar las variables en el método Server.HTMLEncode , así como entre comillas dobles. Por ejemplo:

strSpace = <INPUT type="text" value="<%=Server.HTMLEncode(strSpace)%>">
strDblQuote = <INPUT type="text" value="<%=Server.HTMLEncode(strDblQuote)%>">

strBoth = <INPUT type="text" value="<%=Server.HTMLEncode(strBoth)%>">

Esta revisión genera HTML válido para todas las tres variables:

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">

Nota: esta solución requiere que ajuste los valores entre comillas como se muestra en la primera solución; de lo contrario, strSpace y strBoth se truncan.

Referencias

Para obtener información adicional, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:

259352 PRB: Server.HTMLEncode daña caracteres Unicode y datos del conjunto de caracteres de doble Byte
Propiedades

Id. de artículo: 307406 - Última revisión: 22 ene. 2017 - Revisión: 1

Comentarios