Bug分析之画蛇添足的htmlEncode网页设计 -电脑资料

电脑资料 时间:2019-01-01 我要投稿
【www.unjs.com - 电脑资料】

    在html中,有些字符是用于做特殊标记的,比如“<”,

Bug分析之画蛇添足的htmlEncode网页设计

。当需要在界面上显示这些字符时,就需要用另外一种方法来表示,比如“<”要表示为“<”。只要知道了html中各个符号替代字符串,写一个这样的函数算不上什么难事,可是有人却偏偏画蛇添足,并把添了足的代码放到了网上,结果使很多网站出错。

   

    这段代码被放在一个名为《一些非常有用的Java常用方法》的帖子中。这个帖子被广泛转载,可以在很多技术网站找到它。不过因为很多网站自身可能也使用了帖子中的代码,所以这些网站都无法把这个帖子正确地表现出来。在我找了很久之后,终于找到了这帖子的本来面目。我现在把这帖子的原始内容贴出来,再把那些出错了的网站的中,该帖子的内贴出来,做个对比。原帖中的htmlEncode函数如下(代码1,Java语言,下同):

   

    String htmlEncode(String txt)

    {

    txt = replace(txt,"&","& amp;");

    txt = replace(txt,"& amp;amp;","& amp");

    txt = replace(txt,"& amp;quot;","& quot;");

    txt = replace(txt,""","& quot;");

    txt = replace(txt,"& amp;lt;","& lt;");

    txt = replace(txt,"<","& lt;");

    txt = replace(txt,"& amp; gt;","& gt;");

    txt = replace(txt,">","& gt;");

    txt = replace(txt,"& amp;nbsp;","& nbsp");

    txt = replace(txt," ","& nbsp");

    returntxt;

    }

     

    使用Google搜到的大多网站上的帖子中,该函数的内容如下(代码2):

   

    <PRE</span><span><strong>class</strong></span><span>=csharp name=</span><span>"code"</span><span>>String htmlEncode(String txt){</span></span></li><li><span></span></li><li><span>txt = replace(txt,</span><span>"&"</span><span>,</span><span>"&"</span><span>);</span></li><li><span></span></li><li><span>txt = replace(txt,</span><span>"& amp;"</span><span>,</span><span>"&"</span><span>);</span></li><li><span></span></li><li><span>txt = replace(txt,</span><span>"& quot;"</span><span>,</span><span>"""</span><span>);</span></li><li><span></span></li><li><span>txt = replace(txt,</span><span>"""</span><span>,</span><span>""</span><span>");</span></li><li><span></span></li><li><span>txt = replace(txt,</span><span>"& lt;"</span><span>,</span><span>"<"</span><span>);</span></li><li><span></span></li><li><span>txt = replace(txt,</span><span>"<"</span><span>,</span><span>"<"</span><span>);</span></li><li><span></span></li><li><span>txt = replace(txt,</span><span>"& gt;"</span><span>,</span><span>">"</span><span>);</span></li><li><span></span></li><li><span>txt = replace(txt,</span><span>">"</span><span>,</span><span>">"</span><span>);</span></li><li><span></span></li><li><span>txt = replace(txt,</span><span>"& nbsp;"</span><span>,</span><span>" "</span><span>);</span></li><li><span></span></li><li><span>txt = replace(txt,</span><span>" "</span><span>,</span><span>" "</span><span>);</span></li><li><span></span></li><li><span></span><span><strong>return</strong></span><span>txt;</span></li><li><span></span></li><li><span>}</span></li><li><span></span></li><li><span></PRE>

最新文章