首先说明,此日志不是技术型日志,纯属个人感情发泄!
遇到 Flash+asp 乱码的朋友必看!
从FPV v2开始,Flash+asp乱码的问题一直解决不了,所有可能的方法都试过,最后调试为在标准的 2000 或 2003 服务器下不会乱码。但个人的xp下的iis乱码,始终无法解决,并且是时好时坏。
从一开始怀疑的原因到现在,疑点有下(个人认为):
1.ASP输出的utf-8有问题?
加了 <%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%> ,测试了一遍,自己的IIS(xp)正常,狂欢喜一阵,当在按一下读取按钮时。。。可怕的事情发生了,居然乱码了,到底是为什么??然后把asp文件另存为 unicode 格式。。。再运行,显示读取不了文件,IE里打开,知道asp不能用unicode,记事本另存为里 编码 那有四个,两个带unicode的,一个utf-8,一个系统默认编码,根据做初中英语选择题学的排除法,肯定是utf-8,于是存了这个。再测试,行了!。。。带着恐慌按下去。。。哎。。又乱码了,为什么按第二次就乱码拉?难道是flash问题?(请看下一疑点)
2.Flash的问题?
经过上面的测试,决定把 System.useCodepage 弄为 true ,再测试,更糟,开始就乱码。这没办法啦,但肯定不能再重复上面的,因为已经知道上面的肯定是错误的(结果不是我想要的),只能在弄 System.useCodepage=true 的情况下改一下asp编码,去掉了 <%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%> ,测试正常,再按。。也正常,这次真的高兴了。。高兴之余又想。。。也不对阿,我当初就是想要unicode的,这回不是只支持本地编码拉?于是测试韩文写入,哎。。又失望了,证明也不行,再测试把 <%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%> 去掉,另存asp格式为utf-8,这次更更糟,存进去的根本不是东西。。一堆不是乱码的乱码 像这样:鍩冨厠鏂?xml,MD 我急了,咋就搞不定呢!??为啥?点解阿,点解。。(请再往下看)
3.最终怀疑是。。。(请详细看下面)
我发狂了,我生气了,我想把电脑砸了,我想问为什么要有编码这东西,都用统一的不就行啦,你NND flash,人家IE好好的,到你这就出问题,你NND一开始为什么不想想有这个问题,太气人了,最后狂测试,在以下 去掉<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%> 和 另存asp为utf-8 还有 System.useCodepage=true 的三种中组合来组合去,最后弄出个结果,怎么改这三样东西都不行了,要么是读到乱码,要么是存进去乱码,要么是不支持其他语言文字,这下我真的快疯了,最后再弄弄,IIS浏览asp提示连接人数过多。。TMD M$,IIS就我一个人在这看。。你连接什么多阿。。这时,我想把电脑砸了。想我为啥要干这行。
IIS不行了,只能在空间上做实验拉,把开始的传上去,一试。。奇迹出现了! 居然行了,读也行了,写也行了,数据库也正常,再看看,难道是我眼花了,用的组合是: asp写上<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%> + flash里System.useCodepage=false + asp文件另存为utf-8 。我不知改高兴好还是怎么好。。。此时发现是系统问题,服务器是用2000系统,我的是xp sp2,为了验证此疑点,我做了以下操作:
(此处简写)
我把c给format了,去电脑城4块钱买了一块 2003+2000sp4 的安装碟,开始装系统,开始是2000,装好后测试,正常再不能的正常。
再换2003,也没事儿。。看来真是系统问题?
(写到此处,此问题已经困扰了我两三天,要不是iis不能浏览,可能还要久)
小结
此后又进行了N多测试(比上面还要多),得出以下结论:
要想 Flash+ASP+ACCESS 支持多语言正常的话,必须
1.操作系统不能是 windows XP
2.asp必须为utf-8格式,包括输出和文件本身
3.Flash内不要写 System.useCodepage=true
这样做出来的程序如果放在网站上肯定没问题,因为服务器不可能用xp做系统,要么2000要么2003。从去年遇到这个问题,到现在一直都在找方法解决,最后发现,解决不了,xp下的iis怎么测试都是有问题,而2000/2003下什么问题都没有,至于其中内部原因,也没心思去调查了。
共享出来给大家,别误入歧途阿,要做FLASH+ASP+ACCESS项目,千万别用xp系统作测试,否则后果可是不容易解决的,所有此类项目,不用兼容XP!