asp 读取多语言TXT文件

mhx1982 2008-06-13 04:57:33
想用asp写个测试页面,要求能读取多语言的文本文件,主要是中文,韩文,日文等东亚语言,我把文件格式存成了UTF-8,asp页面上也设置了charset=utf-8但到页面上显示怎么样都是乱码,请大虾指教下。
这是我页面上的代码
<script language="javascript" >

var fso = new ActiveXObject("Scripting.FileSystemObject");
if(fso.FileExists("F:\\Test\\mutimarkettext.txt")){
var fr = fso.OpenTextFile("F:\\Test\\mutimarkettext.txt",1,false,-1);
var str = fr.readall();
document.getElementById("contentarea").innerText=str;
alert(str);
}
</script>

文本文件里随便一些文字

Chinese 这是中文
Japanese などに使っているタクシーチケットを23日から2カ月間、試行的
Korean 서의 모든 컴퓨팅 요구사항을 충족시킬 수 있는 광범위한 제품

...全文
124 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
wcwtitxu 2008-06-14
  • 打赏
  • 举报
回复
test.asp:
<%@ LANGUAGE="JScript" CodePage="65001"%>
<%
String.loadFrom = function(path, cSet) {
var ins = Server.CreateObject("ADODB.Stream");
with (ins) { Type=2; Mode=3; Open(); CharSet=cSet||"UTF-8"; Position=0; LoadFromFile(path); }
var s = ins.ReadText();
ins.Close(); delete ins;
return s;
};

Response.CharSet = "UTF-8";

var path = Server.MapPath("XHeader.asp")
var content = String.loadFrom(path, "UTF-8");
Response.Write(content);
%>


test.asp 也保存成 UTF-8
windwl 2008-06-14
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 mhx1982 的回复:]
可以了,主要遗漏在Response.Write输出时的编码问题,有没有人知道Response.Write输出的细节呢,有没有编码方面好控制的呢?
周一来结帖吧,看看还有没有高见,把这个问题解决好点吧,这种情况肯定很多人会碰到。
[/Quote]
是FSO的问题.FSO默认是GB2312,读UTF-8的当然乱码
mhx1982 2008-06-13
  • 打赏
  • 举报
回复
可以了,主要遗漏在Response.Write输出时的编码问题,有没有人知道Response.Write输出的细节呢,有没有编码方面好控制的呢?
周一来结帖吧,看看还有没有高见,把这个问题解决好点吧,这种情况肯定很多人会碰到。
wtogether 2008-06-13
  • 打赏
  • 举报
回复
用ADODB.Stream读,不要用Response.Write方法,用Response.BinaryWrite输出字节数组
var s = Server.CreateObject("ADODB.Stream");
s.type = 1;
s.open();
s.loadFromFile("F:\\Test\\mutimarkettext.txt");
s.position = 0;
Response.BinaryWrite(s.read(-1));
s.close();
delete s;

mhx1982 2008-06-13
  • 打赏
  • 举报
回复
现在改成这样显示了
<%

var fso = new ActiveXObject("Scripting.FileSystemObject");
if(fso.FileExists("F:\\Test\\mutimarkettext.txt")){
var fr = fso.OpenTextFile("F:\\Test\\mutimarkettext.txt",1,false,-1);
var str = fr.readall();
Response.Write(str);
}
%>

放在服务端,头上写了这个
<%@LANGUAGE="javascript" CODEPAGE="65001"%>
<%
Session.CodePage=65001
Response.CharSet="utf-8"
%>
mhx1982 2008-06-13
  • 打赏
  • 举报
回复
可能不是那么容易解决的吧,如果项目是ASP。NET就简单了。
mhx1982 2008-06-13
  • 打赏
  • 举报
回复
其实我是要在服务端读取的,但写在服务端一直显示有错误,就这样写了,风之问情,能帮忙写几行可行的代码吗,给加分,实在是试了各种方法也没解决,我要实现的其实很简单,就是在服务器端读一个TXT多语言文档,在页面上正常显示。
windwl 2008-06-13
  • 打赏
  • 举报
回复
客户端FSO....
安全性..
mhx1982 2008-06-13
  • 打赏
  • 举报
回复
可能主要的问题在于OpenTextFile方法设置读取的编码吧,用UNICODE打开的话要用TristateTrue参数,但在JS里会报错,后来查到数字值是-1,但还是乱码,unicode和utf-8难道也不兼容?
windwl 2008-06-13
  • 打赏
  • 举报
回复
用adodb.stream 代替FSO
adodb.stream 可以指定编码
mhx1982 2008-06-13
  • 打赏
  • 举报
回复
CSDN上能正常显示的话应该ASP程序里也可以呀,请大虾来看看阿

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧