首先描述一下碰到的问题:
网站的首页采用通过模板静态生成的方法。从7月份到现在一直运行的好好的,服务器在上海。但是今天,突然间,首页的布局就全乱了,项目负责人又给我alert了,我看到这布局乱了,一个最为直接的念头:谁修改css文件了,而整个css都是前台人员设计的,组长问了半圈人,都说没有谁动过这些文件。没办法,只好对应着原来设计的页面,一个一个的标签找,很快找到了,是div不配套,有些div就没有闭合,再细看,相比设计好的模板页面,生成的静态页面少了好几个div标签及标签中的内容,而这几个标签都是相邻着的。再看看模板文件,好好的,没有任何的错误。
怎么办,F11本地调试吧,每替换字符一次我就看一下替换后的文件,几十个替换,我逐一看完,我靠,没有任何问题,把ftp服务器上涉及到的文件都进行替换,重新生成,我靠,还是乱。怎么办呢,把那出错部分换为一段中文字符,重新生成没有问题。一头雾水了,如此简单的一个小问题。
这说明了一个问题,在本地是可以的,不用再本地调试了。
那好,还是看看编码吧: temlpate.aspx 文件的编码采用的utf-8, 涉及到读写文件都是如下编码:
FileStream tFile = File.Open(templateUrl, FileMode.Open, FileAccess.Read);
StreamReader reader = new StreamReader(tFile, Encoding.GetEncoding("utf-8"));
StringBuilder sb = new StringBuilder(reader.ReadToEnd());
reader.Close();
再看看,也没有问题的,出错的地方尽管有中文,其他的中文都可以,所以这里应该也没有问题。下面是出问题的一段模板中的代码:
<ul class="list"><div class="topli"><a href="Friends.aspx?regionId=10" target="_blank">浦口区</a></div></ul>
<ul class="list"><div class="topli"><a href="Friends.aspx?regionId=11" target="_blank">六合区</a> </div></ul>
<ul class="list"><div class="topli"><a href="Friends.aspx?regionId=12" target="_blank">其他</a> </div></ul>
上面的代码就这么简单。是前台美工写的。
把上面这段换为别的代码、一段文字,在重新生成,都是正常的。我真的晕了,一个个调试。先把里面的超链接都去掉,重新生成。布局恢复了。我靠,就是超链接,难道这里有特殊字符,连个&号都没有,郁闷了。。。。
怀疑里面有全角字符,干脆从别的地方没有出现问题的代码复制过来,生成,没有问题,再把超链接改过来,生成,又不行了,布局格式又乱了。实在没有看得了,把汉字替换成其他的,生成,可以。“雨花台区”保留,“浦口区”保留,“其他”保留,再生成,没有问题。到这里,问题终于浮出水面。
太令人吃惊了,“六合区”,在服务器模板上的文字,就是这个“合”,出现了问题,换为“和”吧,虽然别字,但可以生成正确的静态html 了。
其他的页面只要是有这个“合” 的,即使是动态的页面,就这个字,也出现了问题。 很晕。
我也是只是发现了问题,并没有解决这个看似简单的不得了的问题。 下一步试试把所有编码换为gb2312看看还会不会出现这个错误。
知道怎么回事的朋友,看到后,还请给个答复。搞了一晚上了+~~~