JIS→UTF-8への文字コード変換


ベンネーム  2009-07-10 14:22:13  No: 101889  IP: 192.*.*.*

以前、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になっています。

文字コード変換の部分に問題があるのは自明ですので、引き続き調べてみますが、なにかご教示いただけましたら、幸甚です。

編集 削除
魔界の仮面弁士  2009-07-10 15:31:28  No: 101890  IP: 192.*.*.*

> 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")
と記述した方が、問題が少ないです。

編集 削除