2010-03-18 3 views
3

Я потянув RSS-канал из удаленного местоположения с помощью ServerXMLHttp:ASP/VBScript ServerXMLHttp Кодирование

Dim httpRequest 
set httpRequest = server.createObject("Msxml2.ServerXMLHTTP.6.0") 
httpRequest.open "GET", "http://www.someurl.com/feed.xml", false 
httpRequest.send() 
response.write httpRequest.responseXML.xml 

Однако должен быть кодирующими вопросы где-то вдоль линии, как я вижу ???? где должны быть некоторые японские персонажи. У кого-нибудь есть рекомендации при работе с ServerXmlHttp?

Спасибо.

ответ

2

Здесь есть несколько возможных проблем.

  1. Какая кодировка и кодировка используются вашей страницей ASP?

Это может быть задано с помощью директивы <% @ CodePage = xxxxx%> или Response.CodePage и Response.Charset.

  1. Что такое кодировка XML-файла?

Классический ASP имеет заведомо плохую поддержку для этих вещей, а самая безопасная ставка - придерживаться одной кодировки, предпочтительно UTF-8 (CodePage 65001).

0

При просмотре на неструктурированной веб-странице браузер может не использовать правильную кодировку.

Когда XML загружается в парсер, такой как XMLDOM, кодировка должна соблюдаться и отображаться правильно.

Для получения дополнительной информации см. XML Encoding.

2

После нескольких часов исследования, это мои результаты:

не работает:

<%@ Language=VBScript Codepage=65001 %> 

И вместо правильных специальных символов, он показывает вопросительные знаки черные знаки вопроса.

Но это работает !!

Response.CodePage = 65001 

Я также включил

Response.Charset = "UTF-8" 
response.AddHeader "Content-Type", "text/html;charset=UTF-8" 

Окончательный результат:

<%@ Language=VBScript %> 
<% 
Dim xmlhttp 
Set xmlhttp = CreateObject("Msxml2.ServerXMLHTTP") 

xmlhttp.open "GET", "http://www.sapo.pt", 0 
xmlhttp.send "" 
Dim pagina 

response.AddHeader "Content-Type", "text/html;charset=UTF-8" 
Response.CodePage = 65001 
Response.Charset = "UTF-8" 


pagina = xmlhttp.responseText 
Response.Write pagina 
Set xmlhttp = Nothing 
%>