PRB: Enteros negativos no funcionan como referencias de entidad HTML de Unicode

Seleccione idioma Seleccione idioma
Id. de artículo: 272138 - Ver los productos a los que se aplica este artículo
Este artículo se ha archivado. Se ofrece "tal cual" y no se volverá a actualizar.
Expandir todo | Contraer todo

En esta página

Síntomas

Algunas funciones, como la función AscW de Visual Basic Script (VBScript) y de Microsoft Visual Basic (VB), puede devolver un número negativo cuando se solicita para el valor Unicode de un carácter latino no (como Hanzi chinos, Kanji japonés o Hangul coreano). Cuando utiliza este número negativo como una referencia a entidad HTML (& # nnnn , donde nnnn es un número de Unicode hexadecimal o decimal), verá la referencia de entidad como texto literal en lugar del carácter no latinos correspondiente.

Causa

Números Unicode ocupan un intervalo positivo de 16 bits de 0 a 65535 (0xFFFF) y no pueden ser negativos.

Solución

Cuando AscW devuelve un número negativo, devuelve que las dos complementan la forma de ese número. Para convertir las dos complementan notación en notación binaria normal, agregar 0xFFF al resultado devuelto. Para obtener un ejemplo, vea la sección "Más información".

Más información

Pasos para reproducir este comportamiento

  1. Guardar el código HTML siguiente en un archivo denominado TestAscW.htm:
    <HTML>
    
    <HEAD>
    <TITLE>PRB: Negative Integers Do Not Work as Unicode HTML Entity  References</TITLE>
    </HEAD>
    
    <SCRIPT language="VBScript">
    
    // The character used below is the Japanese character "go" (8A9E in 
    //Unicode).
    
    sub load()
    	div1.innerHTML = "Actual character is &#35486; & AscW output is &#" & AscW(ChrW(35486))
    end sub
    
    </SCRIPT>
    
    <BODY language="VBScript" onload="load()">
    
    <DIV id="div1">
    
    </DIV>
    
    </BODY>
    
    </HTML>
    					
  2. Abrir este archivo en Internet Explorer. La segunda referencia de carácter aparece como texto sin formato y no como el carácter japonés "Ir".
Para evitar este problema, cambie el bloque de secuencia de comandos a la siguiente:
function DecodeAscW(sOutput) 
	sAscVal = AscW(sOutput) 
	If sAscVal < 0 Then 	
		sAscVal = 65536 + sAscVal 
	End If
	DecodeAscW = sAscVal
end function

sub load()
	div1.innerHTML = "Actual character is &#35486; AscW output is &#" &  DecodeAscW(ChrW(35486))
end sub
				

Referencias

Para obtener más información acerca de cómo desarrollar soluciones basadas en Web para Microsoft Internet Explorer, consulte los sitios Web de Microsoft siguientes:
http://msdn.microsoft.com/ie/

http://support.microsoft.com/iep

Propiedades

Id. de artículo: 272138 - Última revisión: lunes, 03 de febrero de 2014 - Versión: 3.0
La información de este artículo se refiere a:
  • Microsoft Internet Explorer 4.0 128-Bit Edition
  • Microsoft Internet Explorer 4.01 Service Pack 2
  • Service Pack 1 de Microsoft Internet Explorer 4.01
  • Microsoft Internet Explorer 4.01 Service Pack 2
  • Microsoft Internet Explorer 5.0
  • Microsoft Internet Explorer 5.01
  • Microsoft Internet Explorer (Programming) 5.01 SP1
  • Microsoft Internet Explorer 5.5
Palabras clave: 
kbnosurvey kbarchive kbmt kbdhtml kbintl kbintldev kbprb kbunicode KB272138 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 272138

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com