- - PR -
Ajaxでaspからファイル読み書きで文字化け
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-11-08 01:18
はじめまして、こんばんは。
今Ajaxの勉強をしています。 Ajaxで書いたHTMLファイル(index.html)からaspファイルをコールして、 ファイルの読み書き(fread.asp,fwrite.asp,test.txt)をしようと考えています。 すべてのファイルをutf-8で書き、各ファイルのMETAはcharset=utf-8にしています。 index.htmlから直接test.txtをコールするときちんと日本語の文字が表示されますが、 aspファイルからtest.txtのファイルを読み書きすると、文字が化けてしまいます。 例) index.htmlから直接test.txtを読み出すと「あああああ」と表示されますが、 index.htmlからfread.aspをコールしてtest.txtを読み出すと、 「ああああぁE 」となってしまいます。 さらにfwrite.aspをコールしてtest.aspに書き込むと、テキストファイルには 「\チEせトです\」と書き込まれています。 ちなみにファイルの読み書きは以下のようにしています(HTMLタグは省略)。 ちなみにaspファイルで「・・・<BR>」とResponse.writeすると、 「?・・」のように文字化けしてしまいます。 fileread.asp <% Response.write("ファイルを読み出します。・・・<BR>") Set objFS = CreateObject("Scripting.FileSystemObject") Set objText = objFS.OpenTextFile("C:\Inetpub\wwwroot\Ajax\test.txt") myText = objText.ReadAll Response.write(myText) objText.Close %> write.asp <% Set objFS = CreateObject("Scripting.FileSystemObject") Set objFile = objFS.GetFile("C:\Inetpub\wwwroot\Ajax\test.txt") Set objText = objFile.OpenAsTextStream(8,0) objText.WriteLine("\テストです\") objText.Close %> どうもaspファイルからの読み書きの仕方がまずいということは想像できるのですが、 それ以降の手段がわからず、手詰まりになっています。 どなかたアドバイスいただけませんでしょうか? よろしくお願いいたします。 | ||||||||
|
投稿日時: 2006-11-09 20:19
OpenTextFile メソッドの最後のパラメータは試してみましたか。
使ったことはありませんがUnicode を指定する値(-1)が定義されているようです。 UTF16だけかも知れませんが・・・ [MSDN] OpenTextFile メソッド http://msdn.microsoft.com/library/ja/script56/html/jsmthOpenTextFile.asp [MSDN] OpenAsTextStream メソッド http://msdn.microsoft.com/library/ja/script56/html/jsmthOpenAsTextStream.asp | ||||||||
|
投稿日時: 2006-11-09 22:38
FSO で扱える unicode とは、UTF-16 ということです。 なんで、ADODB.Steam を利用しましょう。 [追記]
ASP から wwwroot 配下に書き込みを行っているようですけど、くれぐれも security に気を使いましょう。 最低でも当該 virtual directory の設定で、script の実行は切っておくべきです。 [ メッセージ編集済み 編集者: ちゃっぴ 編集日時 2006-11-09 22:43 ] | ||||||||
|
投稿日時: 2006-11-10 21:55
みなさん回答ありがとうございます。
ご指摘のとおり、ADODB.Streamを使ってやってみたのですが、 ブラウザをUTF-8で表示すると、 ƒeƒXƒg‚ł·B 書き込み完了しました。 シフトJISで表示すると、 テストです。 譖ク縺崎セシ縺ソ螳御コ・@縺セ縺励◆縲・ となります。 どっちつかずの表示となってしまい困ってます。 /**** 以下、ソース (test.datにはUTF-8で「テストです。」と書いています。)****/ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=utf-8"> <TITLE>file read</TITLE> </HEAD> <BODY> <% Dim ObjStream Set ObjStream = Server.CreateObject("ADODB.Stream") ObjStream.Open ObjStream.CharSet="UTF-8" ObjStream.LoadFromFile "C:\\Inetpub\\wwwroot\\Ajax\\test.dat" ValData = ObjStream.ReadText Response.Write Valdata ObjStream.Close Set ObjStream = Nothing %> <BR> 書き込み完了しました。 </BODY> </HTML> | ||||||||
|
投稿日時: 2006-11-11 13:49
ASPファイルの先頭に、以下の1行を追加してみてください。
<%@ Language="VBScript" CodePage="65001" %> |
1