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](https://i.stack.imgur.com/hVVWq.png)
を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)