2010-12-02 8 views
0

私は、サイトのフィードを表示するためにクライアントのURLを使用しようとしています。私の問題は、アプリケーションがJavaで書かれているように見え、XMLレスポンスのエンコーディングがISO8859_1で、これはMSXMLのアクティブxオブジェクトでサポートされていないエンコーディングです。参考のためにこのリンクを参照してください:http://support.microsoft.com/default.aspx?scid=kb;EN-US;q304625vbscriptがRSSフィードを読み込もうとしています。システムの問題で、指定されたエンコードがサポートされていません。

問題は、私が変更することができないか、または応答XMLのエンコーディングを変更することを依頼することさえ疑うことです。このために別の回避策がありますか?

CODE

Function GetXmlDom(pUrl) 
     Set GetXmlDom = Server.CreateObject("MSXML2.DOMDocument") 
     GetXmlDom.async = False 
     GetXmlDom.setProperty "ServerHTTPRequest", True 
     GetXmlDom.load(pUrl) 

End Function 

それは最初の罰金に見えるのヘッダーがすべて表示されます。次に、私はこのエラーを受け取ります:

エラーコード1072896658原因システムが指定されたエンコーディングをサポートしていません。 システムエラー:-1072896658。

ブラウザで同じURLに移動すると、XMLドキュメントが正しく表示されます。

はあなたが同じ

おかげで、 のRohit

答えて

1

I highly doubt that I will be able to change, or even request to change the encoding of the response xml.

のためのソリューションを提案してくださいすることができまあ、それは壊れています。 The IANA saysは、ISO-8859-1の正規名はISO-8859-1です。 ISO8859_1は法的なエイリアスではありません。良いインターネット市民権を練習するには、は変更を要求する必要があります。それが壊れていることを指摘し、修正を求める。良い市民権を練習するには、クライアントがそのバグを修正する必要があります。

ISO8859_1は、もともとJavaライブラリコード内で、ISO-8859-1にマップされた名前として使用されていた名前です。私はマッピングの必要性を理解していませんが、この使用法はうまくいきました。しかしそこからは、Javaが使用する内部名は実際にはエンコーディング名であると仮定されています。それは本当にJavaにしか知られていないエイリアスです。そして、誤った信念がJava以外の他の図書館やフレームワークに広がり、JavaがISO8859_1をエンコーディング名として使用していた場合、正しくなければならないと誤って推測されました。要するに、ISO8859_1は、IANAエンコーディング文字列が期待される実際のXML文書では使用しないでください。一方


...私が得るものはありません

If i navigate to the same URL in my browser, it displays the XML document fine.

。 RSSソースとしてこれを使用する:

<?xml version="1.0" encoding="ISO8859_1"?> 
<rss version="2.0"> 
    <channel> 
<title>FeedForAll Sample Feed</title> 
<description>RSS is a fascinating technology. ....</description> 
... 

私はIE8でこの結果が得られます。

alt text

をVBScriptでそれを読むには、ISO-8859-1とそのISO8859_1を交換する必要があります。これはServerHTTPRequestオブジェクトを使うとかなり簡単です。

Function UrlGet(url) 
    Set xmlhttp = CreateObject("MSXML2.ServerXMLHTTP.6.0") 
    xmlhttp.open "GET", url, False 
    xmlhttp.send 
    '' treat the output as plain text. We know it may be broken. 
    UrlGet = xmlhttp.responseText 
End Function 


Dim url 
url = "http://localhost/misc/broken.rss" 

'' the above URL starts with an XML declaration of 
'' <?xml version="1.0" encoding="ISO8859_1"?> 
'' ... which is invalid, because ISO8859_1 is not a valid 
'' name for an XML encoding. 

Dim urlText 
urlText = UrlGet(url) 

'' replace the encoding with what we think it should be 
urlText = Replace(urlText,"encoding=""ISO8859_1""","encoding=""ISO-8859-1""") 

Set doc1 = CreateObject("Msxml2.DOMDocument.6.0") 
doc1.async = False 
doc1.preserveWhiteSpace= False ' True 
doc1.loadXml(urlText) 
関連する問題