以前一直用ASP.NET自带的那个时间控件来进行时间输入,但考虑到那个控件需要不断地往服务器回传,大大加重了网络和服务器的负责;而且这次的项目中还用到了客户端脚本对页面的内容进行了更改,回传后这些值将无法保存等问题,决定采用客户端脚本的方式来显示日期,而不再让其回传。为此,我用了一个JavaScript文件来保存生成时间选择界面的脚本,但问题也就这样跟着来了,页面上所有中文显示正常,唯独脚本生成并用document输出的代码是乱码。猜测肯定是页面编码的原因所致,就给页面加了一句。以往这如很灵的,可这回好像真的跟我耗上了,问题依旧。点右键看浏览器当前的编码,黑色小三角清清楚楚地指在UTF-8上。那把编码改成GB2312行不行呢?说干就干,试试再说嘛,这是我一贯的风格。可是这回不但脚本出现错误,连原来好好的页面也全都变成乱码了,记得ASP.NET里面默认确实是以UTF输出的,能不能把编码强制改成GB2312的呢,于是再次动手把document的charset属性改成“简体中文”的。
文档属性.png
  哈哈,页面显示正常了,就是下图这个样子。
日历.png
  可是事情还没完,页面显示虽然一切正常,但页面上所有文本框里内容用Text属性读出来的全变成乱码了,这样一来更糟糕了,那就等于一点内容也取不到了。
  那问题到底出在哪呢document的发生是不能改了,头上加个标签又没用。问题肯定是出在脚本上了。突然想到很多人的代码输出中文字的时候好像都是输出一堆的编码的,可是编码我都不知道啊,怎么办?既然脚本中的英文和数字能输出,那应该就是脚本的编码有问题了,何不干脆把脚本的编码改得和页面一样试试呢。于是用EditPlus打开脚本,然后再另存,同时选择保存的编码为UTF。再次打开网页,OK,显示一切正常,用调试跟踪显示数据获取也一切正常。
  这个问题总算解决了,只要把脚本的编码也改成UTF的就行了。记得好像以前在博客园还是CSDN看过类似的文章的,但是当时没在意,想不到今天还真的遇上了,还整了我半天的时间。