htc文件GB2312编码格式导致包含中文的注释行混乱,不易发现(原创)
2006-06-12 14:47 BAsil 阅读(906) 评论(0) 编辑 收藏 举报今天,在htc文件应用一段简单的dhtml时,竟然出现了错误,看一下
var _table = window.document.createElement("TABLE");
window.document.body.appendChild(_table);
_table.cellSpacing = 0;
_table.cellPadding = 0;
_table.className = "Main";
var _tr = _table.insertRow();
_tr.style.background='beige url(images/top_middle.gif) repeat-x';
var _td = _tr.insertCell();
_td.style.width = 8;
_td.style.height = 8;
_td.innerHTML = '<IMG SRC="images/top_left.gif" WIDTH="8" HEIGHT="8" BORDER=0>';
//_td = _tr.insertCell(); //第二列
_tr = _table.insertRow(); //第二行
_tr.vAlign = "top";
_td = _tr.insertCell();
_td.className = "MainTableLeft";
_td.colSpan = 2;
_td.appendChild(element);alert(_table.rows.length);
可是_table.rows.length的结果总是1而不是期望的2,而这段代码在jscript中运行正常。经过反复的试验,最终发现问题出在htc的编码上。
Tips:在VS.net中更改htc编码
打开htc文件,选择另存为,在弹出的对话框中的保存按钮旁边有一个小的下拉箭头,选择utf-8保存。
当我更改了编码格式后,问题消失了。我的代码中只有两行有注释
//_td = _tr.insertCell(); //第二列
_tr = _table.insertRow(); //第二行
问题就出在这里,当编码格式为GB2312,由于解析器不能正确的解析中文字符,解析的结果类似:
//第二列_tr = _table.insertRow();
//第二行.....
因此第二个insertRow()并没有执行,问题解决。
总结:
1.htc文件一定注意其编码格式,有的问题可能是因为编码问题造成的。
P.S. 罗本就是牛X,偶已经把桌面换成他的了,我的技术一般,速度还可以,罗本就是我的偶像拉。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架