困扰我七八年之久的博客乱码问题终于解决了!!!(应该是解决了吧)
遥想当年,第一次遇到不同编码(utf-8和gb2313)带来的问题,应该是2012年底,醉江湖开放前夕,扒皮了个页游模版来当江湖封面(也引起了江湖界用页游风首页的风潮)。
页游首页是utf-8编码,对接江湖数据时候出现乱码,把页游首页改成gb2312编码解决了问题。
2015年,给江湖子站添加了个目录,主要是为了增加收录,最终选定了zblog(utf-8编码,当时没意思到埋下了乱码隐患)。(也带领了江湖站长界子目录博客风潮)
2017年也在博客发布过关于zlbog乱码的文章,但是当时没解决。zblog谷歌浏览器乱码
后来也咨询过别人,说是和主站编码不一致导致,以为无解。就一直没去管这个问题,主要这个问题从始至终也就我一人遇见。直到本月27号,江湖玩家玄鬼反馈了
终于不是就我一个人遇到,也不再是偶发性事件,藉此常态化乱码情况,决定再研究研究找出解决方法。于是乎这两天就开始各种找资料,皇天不负有心人,终于让我给解决了。
问题的根本是:
ASP程序在同一个站点中,如果出现UTF-8编码的程序,又有GB2312的程序,在浏览完UTF-8编码的页面后,
再浏览GB2312的页面,GB2312编码的页面就会出现乱码.
出现这样的问题,可能是:当你浏览UTF-8编码的时候,服务器默认用UTF-8的引擎来输出html,
当你用再浏览GB2312的页面时,它还是用UTF-8来输出本应是GB2312编码的页面.所以会乱码.
网络上资料建议再 utf-8编码开头加上:<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<%Session.CodePage=65001%>
但是zblog首页几个文件开头本就有 <%@ CODEPAGE=65001 %> ,加上那些反而冲突了,
然后注意到首页几个文件都有<!-- #include file="zb_users/c_option.asp" -->
解决:
在 c_option.asp 这个数据库连接文件(网站配置文件)开头加上<%Session.CodePage=65001%>乱码页面就正常了。
但是 c_option.asp 文件在后台有更新的时候会被自动覆盖,新生成文件开头又没有<%Session.CodePage=65001%>,难道以后每次更新都需要到服务器添加下这行代码?
最终,通过检索相关代码发现了 c_option.asp.html 这个模版文件,在这个模版文件开头加上<%Session.CodePage=65001%>,以后后台更新,新c_option.asp文件开头也自带<%Session.CodePage=65001%>。至此ZBLOG乱码问题完美解决。
后记:
在此过程中,咨询了现用模版作者:十五楼的鸟儿,几年前买的模版,现在还能耐心回答我。还表示要帮忙看下怎么在c_option.asp文件开头自动生成<%Session.CodePage=65001%>,不过他回我的时候,我自己已经解决了。
不同编码造成的乱码只存在有数据输出的动态页面,醉江湖有些静态页面也是utf-8,就一直没碰见乱码。
弯路:
一开始想着UTF-8是国际编码是不是能兼容gb2312,想把首页改utf-8,这样博客就不会乱码。(完全忘记了当初制作首页修改为gb2312的经历)
结果整来整去没搞定不说,一些正常的gb2312编码目录反而乱码了,其中一个加了 <%Session.CodePage=936%> 后马上正常了,另一个 过了一会也自动恢复了。
也可以两行都加上:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<%Session.CodePage=936%>
第二行也可以添加到代码里
转载请注明:江湖传说 » 子目录utf-8博客乱码终于解决