再次用ASP(ASP在新形势/新背景下需要注意的东西)

好文收集 专栏收录该内容
1 篇文章 0 订阅

原帖:http://community.csdn.net/Expert/topic/5251/5251455.xml?temp=1.171291E-03
作者:xlyyc (宇) 

离开了ASP开发阵营将近4年,其间一直钻研JAVA技术。
最近接个荷兰外单,功能要求很简单,但是需要国际化、而且方便部署。
考虑到服务器在国外,不方便远程维护,而ASP在部署和维护上还是很方便的。于是就决定用ASP了。
于是很自然遇到几个问题
一 UTF-8问题
  既然是国际化,那么自然是需要支持UTF-8的,本来考虑使用ASP+MYSQL+FSO,觉得应该很easy,没有想到一上来就碰个钉子!
ASP真是个老技术了!
我的做法如下:
  所有的ASP都要有

< %@CODEPAGE = 65001 % >
< %
Response.codePage
= 65001
Response.ContentType 
=   " text/html "
Response.CharSet 
=   " utf-8 "
%
>
< meta http - equiv = " Content-Type "  content = " text/html; charset=utf-8 " >


  并且另存为UTF-8格式
  FSO并不支持直接生成UTF-8,得用下面的程序

< %
' -------------------------------------------------
'
函数名称:ReadTextFile
'
作用:利用AdoDb.Stream对象来读取UTF-8格式的文本文件
'
调用举例:ReadFromTextFile ("xxx.txt","utf-8")
'
----------------------------------------------------
function  ReadFromTextFile (FileUrl,CharSet)
 
dim  str
 
set  stm = server.CreateObject( " adodb.stream " )
 stm.Type
= 2
 stm.mode
= 3
 stm.charset
= CharSet
 stm.open
 stm.loadfromfile server.MapPath(FileUrl)
 str
= stm.readtext
 stm.Close
 
set  stm = nothing
 ReadFromTextFile
= str
end function
' -------------------------------------------------
'
函数名称:WriteToTextFile
'
作用:利用AdoDb.Stream对象来写入UTF-8格式的文本文件
'
调用举例:call WriteToTextFile ("xxx.txt","abcdef","utf-8")
'
----------------------------------------------------
Sub  WriteToTextFile (FileUrl,byval Str,CharSet)
 
set  stm = server.CreateObject( " adodb.stream " )
 stm.Type
= 2
 stm.mode
= 3
 stm.charset
= CharSet
 stm.open
 stm.WriteText str
 stm.SaveToFile server.MapPath(FileUrl),
2
 stm.flush
 stm.Close
 
set  stm = nothing
end Sub
%
>


   于是ASP和文件操作都很顺利,但是在连接MYSQL时候,还是遇到了难题,以下代码:

strConn = " Driver={MySQL ODBC 3.51 Driver};Server=localhost;CharSet=utf8;Port=3312;Option=0;Socket=;Stmt=;Database=aa;Uid=root;Pwd=admin; "
Set  Conn  =  Server.CreateObject( " ADODB.Connection " )
Conn.Open strConn
Conn.Execute 
" SET NAMES 'utf8'; "

   本来觉得OK了,但是,在ASP中读记录时候,中文居然都是乱码!
开始觉得没有什么了不起的,在用JAVA的时候中文问题就有很多经验了,于是GOOGLE。
FUCK!居然一天都没有进展!所有能够找到的ASP+MYSQL的例子,居然都不能支持中文。
看来问题不那么简单啊,翻了一天的网页,终于发现一个台湾人的帖子,他遇到了同样的问题,解决方案居然是在中文插入前使用Server.HTMLEncode,这样保存到MYSQL的中文都是编码后的字符串,很奇怪,这样的编码ASP竟然可以正常显示为中文!
看来要怀疑一下MYSQL的UTF8和ASP的UTF-8根本不是一回事!
这样的解决方案我很怀疑以后会有什么不测的问题,于是决定改为ASP+ACCESS。

二 使用AJAX
 现在还是很流行这个东西的,我也不是为了流行而流行,毕竟这个项目需要支持中文和英文,如果使用AJAX的话,可以达到表示层和业务层分开的目的,这样就会很方便了。
使用了prototype.js,这个东西还是很好的,代码会很简洁。
借鉴MVC模式,表示层和控制层为AJAX,MODEL、业务层ASP,通过AJAX来决定该请求那个ASP开放的方法,ASP返回组织好的数据,这样做带来了一个好处,界面中英文换起来很快,而ASP程序根本不需要修改任何一行。

三 父路径问题
 微软为安全问题,看来也是焦头烂额了,IIS开始默认禁止父路径。这个好办,改为使用虚拟路径
比如<!--#include virtual="/inc/conn.inc"-->

四 ACCESS中文操作系统下默认排序的问题
  由于服务器操作系统是英文,所以在中文环境下默认的ACCESS排序设置不能用到英文服务器环境下,连接ACCESS的时候会报错。
  这个问题也好解决,修改ACCESS的默认排序,重新生成ACCESS文件即可。

五 XP下的调试环境
  主要是会有提示没有可更新的查询,权限设置有关,去GOOGLE一下就知道如何解决了。

上面的几个问题注意到了,ASP就可以欢畅的在国内外不同的服务器下顺利运行起来。 

  • 1
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值