Проблема: Отрицательные целые числа работают как ссылки на объект HTML Юникода

Переводы статьи Переводы статьи
Код статьи: 272138 - Vizualiza?i produsele pentru care se aplic? acest articol.
Развернуть все | Свернуть все

В этой статье

Проблема

Некоторые функции, такие как Microsoft Visual Basic (VB) и сценария Visual Basic (VBScript)AscWфункции, могут возвращать отрицательное число, при запросе значение символа (латиница) (например, Hanzi китайского языка, кандзи (японский) или корейский хангыль) в кодировке Юникод. При использовании этого отрицательного числа как ссылки на сущность HTML (& #nnnnгдеnnnnявляется шестнадцатеричном или десятичном формате Юникод номер либо), ссылка на сущность отображается как обычный текст, вместо того, где соответствующий знак (латиница).

Причина

Номера Юникода занимают 16-разрядные положительный диапазон от 0 до 65535 (0xFFFF) и не может быть отрицательным.

Решение

ПриAscWВозвращает отрицательное число, возвращается twos дополняют это число. Для преобразования twos дополняют нотации в обычном двоичном обозначении добавить 0xFFF возвращаемый результат. Например в разделе «Дополнительная информация».

Дополнительная информация

Действия для воспроизведения поведения:

  1. Сохраните следующий HTML-код в файл с именем 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. Откройте этот файл в обозревателе Internet Explorer. Вторая ссылка на символы отображаются как обычный текст, а не как японских символов "Перейти".
Чтобы обойти эту проблему, измените блок сценария следующий:
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
				

Ссылки

Для получения дополнительных сведений о разработке веб-приложений для Microsoft Internet Explorer посетите следующий веб-узлов корпорации Майкрософт:
http://msdn.microsoft.com/ie/

http://support.microsoft.com/iep

Свойства

Код статьи: 272138 - Последний отзыв: 21 ноября 2010 г. - Revision: 3.0
Информация в данной статье относится к следующим продуктам.
  • Microsoft Internet Explorer 4.01 Service Pack 1
Ключевые слова: 
kbdhtml kbintl kbintldev kbprb kbunicode kbmt KB272138 KbMtru
Переведено с помощью машинного перевода
ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.
Эта статья на английском языке: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