跟踪发现中文乱码在fmmgmt.c文件里,如下:
sprintf(tmpBuf, "%s","更改设置成功!<br><br>路由器正在重启.<br>在这段时间内,请不要断开电源或重启路由器.<br>");
重启界面在asp_form.c里,如下:
void OK_MSG_FW(char*msg, int c,char* ip)
{
cyg_httpd_start_chunked("html");
web_write_chunked("<html>\n<head>\n");
//mutil_lang_support();
web_write_chunked("<script language=JavaScript>\n");
.......
web_write_chunked("<body οnlοad=\"do_count_down();\" bgColor=\"transparent\">\n<blockquote>\n<h4>%s</h4>\n", msg);
// web_write_chunked("<P align=left><h4>Please wait <B><SPAN id=show_sec></SPAN></B> seconds ...</h4></P>\n");
web_write_chunked("<P align=left><h4>请等待 <B><SPAN id=show_sec></SPAN></B> 秒 ...</h4></P>\n");
web_write_chunked("</blockquote>\n</body>\n</html>\n");
cyg_httpd_end_chunked();
}
将fmmgmt.c和asp_form.c格式设置为utf-8时,谷歌和火狐浏览器是正常的,但是在IE浏览器下是乱码
将fmmgmt.c和asp_form.c格式设置为GB2312时,谷歌和火狐浏览器下是乱码,但是在IE浏览器是正常的
对比代码发现,//mutil_lang_support();,这个函数被屏蔽了,那么取消屏蔽这个函数呢?
结果是在IE和谷歌火狐下,界面都没有乱码,但是界面加载超级慢
那么分析mutil_lang_support();这个函数吧,分别屏蔽这个函数里面的两个模块,屏蔽这一块代码后,功能变的正常:
web_write_chunked("<SCRIPT language=Javascript src=\"");
getLangInfo(1,argv_lang);
web_write_chunked("\">");
web_write_chunked("</SCRIPT>\n");
加载慢的原因就可能是getLangInfo(1,argv_lang);了,那么起作用的又是那些代码呢?
web_write_chunked("<meta http-equiv=\"Content-Type\" content=\"text/html;charset=");
getLangInfo(1,argv_char);
web_write_chunked("\">\n");
即相当于给重启界面网页定格式为UTF-8,。
这样就明了了,asp_form.c格式设置为utf-8时,但是重启界面的代码格式并未随着一起生效。
最终修改的结果就很简单了,直接在void OK_MSG_FW(char*msg, int c,char* ip)函数里加一句:
web_write_chunked("<meta http-equiv='Content-Type' content='text/html;charset=utf-8'>\n");
其中要注意的是在web_write_chunked里,单引号和双引号的问题,印象中JS里面还用“\”表示转义
至此问题解决。
刚开始以为做底层做驱动的,没想到最终全部要做,但弄页面其实是最多的,以为自己弄Linux,结果弄ecos,想做的和要做的区别真大。
兵来将挡,水来土掩,BUG来我修复,可是离开原厂SDK后其实什么都不是,大的BUG又修复不了,也没人可以请教。
有时候还是蛮纠结。