2006/07/31
Writing XML by ASP in Japanese
by
Days
—
posted at
2006-07-31 23:31
last modified
2006-07-31 23:35
iTunesのPodcast向けにRSSを書いているのだが、日々の運用のためにこれをASPで出力することにした。DBにitemを書き込んでもらい、それをまとめてRSSに書き出すのだ。
で、ASPはS-JIS、XMLはUTF-8で日本語を書くので、ちょっとした工夫が必要。
変換にはADODB.Streamを使う。
ASPスクリプトそのものをUTF-8で書いて、response.writeしても文字化けの嵐だったので、このようにした次第。
で、ASPはS-JIS、XMLはUTF-8で日本語を書くので、ちょっとした工夫が必要。
dim resp resp = resp & "<?xml version=""1.0"" encoding=""UTF-8""?>" & vblf resp = resp & "<rss xmlns:itunes=""http://www.itunes.com/dtds/podcast-1.0.dtd"" version=""2.0""?>" & vblf resp = resp & "<channel>" & vblf resp = resp & "<title>ホアランポーンからのポッドキャスト</title>" & vblf ... resp = resp & "</channel?>" & vblf resp = resp & "</rss?>" & vblfなどと、"resp"に必要な文字列をS-JISで入れておく。もちろんDBからの出力文字列を織り交ぜるのもOK(のはず)。RSS自体の書き方は、"PodcastingとiTunes: 技術仕様" をご参照。
変換にはADODB.Streamを使う。
Set iStream = Server.CreateObject("ADODB.Stream")
function ConvUTF(strValue)
call iStream.Open
iStream.Position = 0
iStream.SetEOS
iStream.Type = 2
iStream.Charset = "utf-8"
iStream.WriteText strValue
iStream.Position = 0
iStream.Type = 1
iStream.Position = 3
ConvCharset = iStream.Read()
call iStream.Close
end function
Set iStream = Nothing
Response.ContentType = "text/xml"
Response.Charset= "utf-8"
Response.BinaryWrite ConvUTF(resp)
という感じ。ASPスクリプトそのものをUTF-8で書いて、response.writeしても文字化けの嵐だったので、このようにした次第。
- Category(s)
- 仕事の周辺