很郁闷,刚写的一篇文章让不知道为何出错的博客弄丢了,到空间控制面板一看不知道怎么弄的没有了写权限,于是赋予写权限,刚才看着自动保存失败了感觉就有问题,但是提交时却忘记了复制下来了,只能凭着想象再写一遍了,哎
最近在将一个网站转移到国外空间时出现了国外空间与辆空间的兼容问题,不用说,一猜就是编码方式的问题,国外空间(在美国)用的是英文的操作系统,而网站系统则是使用的gb2312编码。说说问题所在吧:开始网站各个方面都挺好,但后来发表文章时出错了,经过测试研究,发现是静态页面生成函数的问题,难道这个函数只针对国内?显然是不对的。依照系统编写了一个测试代码如下:
<%@ language = vbscript codepage = 936%>
<%dim content,fid
content = "中华人民共和国"
fid = "a.txt"
set fso = server.createobject("scripting.filesystemobject")
set fileobj = fso.opentextfile(server.mappath(fid),2,true)
fileobj.write content
fileobj.close
response.write("写入成功")
set fileobj = nothing
set fso = nothing
%>
在本地测试成功,写入完全没有问题,上传至服务器便会出现500错误,经过多次测试发现将要写入的字符改成纯英文或数字便不会出错,就能成功写入文件;但如果包含中文,写入时会把原先已经存在的文件覆盖,文件会变成空的,也就是什么也没写入。问题出在服务器,这是我的第一反映,再一想最好的办法就是问一下主机商是什么原因造成的,于是一封带着疑问的英文邮件就这样发出去了。
过了许久,24小时之内吧,但我觉得时间已经很长了,着急啊,看了看邮件回复,下面是原文主体部分:
thank you for contacting hosting support.
the following url demonstrates the usage of the opentextfile method:
http://msdn.microsoft.com/en-us/library/314cz14s(vs.85).aspx
object.opentextfile(filename[, iomode[, create[, format]]])
and it contains further notes on the syntax of the optional format parameter:
format
- optional. one of three tristate values used to indicate the format of
the opened file. if omitted, the file is opened as ascii.
your script only has 3 parameters, so they are omitting formatting. chinese
characters require unicode or another format more robust than ascii to
display properly.
please contact us if you have any further issues.
一看明白了原来是opentextfile函数的参数问题,opentextfile函数有四个参数,而最后一个参数表明的是以何种编码打开文件,然而在网站的函数中最后一个参数却省略了,这是导致错误的原因之一,至于在国内空间没有问题,估计是国内空间ascii码与国外空间ascii码有区别或是在语言上有差别,不清楚,管它呢,抓紧时间登上客服给的微软官方网站看看,大体明白了怎样操作,只是把 set fileobj = fso.opentextfile(server.mappath(fid),2,true) 改成 set fileobj = fso.opentextfile(server.mappath(fid),2,true,-1) 就ok了,这就是表明以unicode代码写的方式打开文件,果然成功了,文件能正常显示了,但是生成的文件比原来大很多,打开对比本地生成的文件没发现有什么不同的地方。上网搜索,原因是unicode处理字符都以两个字节保存,在处理单字节字符时默认在单字节字符前面补0,这是导致文件变大的主要原因。
还未等高兴起来,问题又来了,出于某种原因,首页default.asp中用include方式调用了生成的静态首页,又出现了500错误,究其原因估计是asp不支持双字节的unicode编码方式,在网上查找了半天也没找到解决方法,最后还是直接转向了事。
哎,看来编码还真是个大问题啊,弄网站过程中可真是被这些个编码给弄的稀里糊涂的,越来越不明白了。只能先这样了,继续在学习中研究,在研究中学习。
个人拙见,如果有错误或不同意见请各位路过高手不吝赐教。
Related posts: