在调试中偶尔会出现Malformed HTML - no appropriate closing tag for html的错误信息

在调试中偶尔会出现Malformed HTML - no appropriate closing tag for html的错误信息。

判断是HTML标签没有关闭。但是输出的HTML的确是完整开闭的。

DEBUG调试,按每个字进行判断,突然发现在处理“绿”这个字的时候循环跳出。问题出在Parser.java中的 parseTagContent方法,原来程序用while循环,while((byte)c!=-1),c从哪里来?从流中读取char c=(char)is.read();强制将int转成char型。额,问题定位。byte型通常是正负255,而中文字都是几万的int型,这样强制转了之后就会导致不确定的值,相当于类似(byte)23431,可能输出-255~255之间任意的值,一旦某个汉字转换后成了-1,就会导致循环跳出。

解决方案:循环改成(int)c。或者彻底改写,新加一个函数中的int全局变量

int charint = is.read();
       
while(charint!=-1) {
        char c=(char)charint;
          ..........
         charint = is.read();
}

从HTML控件来说LWUIT1.4不如FIRE2.3做得轻巧,操作起来也感觉卡。但是胜在强大的控件。之前尝试LWUIT和FIRE2整合难以统一UI界面风格。换用全套LWUIT只能老老实实改它的BUG……

你可能感兴趣的:(html,c,UI,byte)