PROBLEMA: Números inteiros negativos não funcionam como Unicode referências de entidade HTML

Traduções deste artigo Traduções deste artigo
ID do artigo: 272138 - Exibir os produtos aos quais esse artigo se aplica.
Este artigo foi arquivado. É oferecido "como está" e não será mais atualizado.
Expandir tudo | Recolher tudo

Neste artigo

Sintomas

Algumas funções, como a função de script do Visual Basic (VBScript) AscW e Microsoft Visual Basic (VB), podem retornar um número negativo quando você solicitar o valor Unicode de um caractere não-latino (como Hanzi chinês, japonês kanji ou Hangul coreano). Quando você usa esse número negativo como uma referência de entidade HTML (& # nnnn , onde nnnn é um decimal ou hexadecimal Unicode número), você vê a referência de entidade como texto literal, em vez do caractere não-latino correspondente.

Causa

Números de Unicode ocupam um intervalo de positivo de 16 bits de 0 a 65535 (0xFFFF) e não podem ser negativos.

Resolução

Quando AscW retornará um número negativo, ela retorna que os pares complementam forma desse número. Para converter os pares complementam notação em notação binária normal, adicionar 0xFFF o resultado de retorno. Para obter um exemplo, consulte a seção "Mais informações".

Mais Informações

Etapas para reproduzir o problema

  1. Salve o seguinte código HTML em um arquivo chamado 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. Abra este arquivo no Internet Explorer. A segunda referência de caractere é exibida como texto bruto e não como o caractere japonês "go".
Para contornar esse problema, altere o bloco de script para o seguinte:
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
				

Referências

Para obter mais informações sobre como desenvolver soluções baseadas na Web para o Microsoft Internet Explorer, visite os seguintes sites:
http://msdn.microsoft.com/ie/

http://support.microsoft.com/iep

Propriedades

ID do artigo: 272138 - Última revisão: segunda-feira, 21 de outubro de 2013 - Revisão: 3.0
A informação contida neste artigo aplica-se a:
  • Microsoft Internet Explorer 4.0 Edição de 128 Bits
  • Microsoft Internet Explorer 4.01 Service Pack 2
  • Microsoft Internet Explorer 4.01 Service Pack 1
  • 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
Palavras-chave: 
kbnosurvey kbarchive kbmt kbdhtml kbintl kbintldev kbprb kbunicode KB272138 KbMtpt
Tradução automática
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: 272138

Submeter comentários

 

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