以前、ResponseTextの文字化けについてご教示いただきました、その節はお世話になりました。ぜひまたお知恵を拝借できましたら幸いです。
ASPのページ内でgoogleマップを扱おうとしています。ファイルの文字コードはUTF-8です。マップと一緒にDBから取得してきた住所を表示したいのですが、住所の文字化けが解消できません。
<%
strSQL="SELECT * FROM database WHERE id=12345"
Set objRS=Server.CreateObject("ADODB.RecordSet")
objCMD.CommandText=strSQL
objRS.Open g_objCMD,,adOpenStatic,adLockReadOnly
If Not objRS.EOF Then
strAddress=objRS("address")
End If
objRS.Close
Set objRS=Nothing
Dim Stream
Set Stream = Server.CreateObject( "ADODB.Stream" )
Stream.Open
Stream.Position = 0
Stream.Type = 2
Stream.Charset = "utf-8"
Stream.WriteText strAddress
Stream.Position = 0
Stream.Type = 1
Stream.Position = 3
strAddress = Stream.Read()
Stream.Close
Set Stream = Nothing
%>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<script src="http://maps.google.com/maps?…></script>
</head>
<body>
〜マップを表示する処理〜
<%= strAddress %>
</body>
</html>
ファイルの文字コードはUTF-8で、住所以外のコンテンツは正しく表示されています。文字コードをチェックすると、住所部分はJISになっています。
文字コード変換の部分に問題があるのは自明ですので、引き続き調べてみますが、なにかご教示いただけましたら、幸甚です。
> ASPのページ内でgoogleマップを扱おうとしています。
> ファイルの文字コードはUTF-8です。
(1) ASP ファイルに @ codepage ディレクティブを指定していますか?
(2) EnableSessionState は True/False いずれですか? True の場合、Session.CodePage は何にしていますか?
(3) Response.Charset は何に設定していますか?
(4) <%=strAddress%> ではなく、<%=Server.HtmlEncode(strAddress)%> と記述しないと、"<" などを含んだデータを正確に出力できません。
> strAddress=objRS("address")
今回の件とは関係ありませんが、
strAddress = objRS.Fields("address").Value
もしくは
strAddress = objRS.Collect("address")
と記述した方が、問題が少ないです。