wordpress的blog平台我很喜欢,但它有个让人很不爽的地方,就是很难方便又准确的贴出代码。往往浏览器里显示正常,贴进来就完全走样,回车变成空格,html标记显示不了,有的字符还少半拉…… 种种问题不一而足,对经常要贴代码的开发者真是一种折磨。

测试多次后发现,最常见的问题是:内容提交后,回车跟tab无效(即使在<pre>标记里),多个空格无效(即使把空格转换成 &nbsp;),html标记不显示(即使把 <> 转换为 &lt;&gt;),\n 变成了 nsrc="url"(除<img>标记之外)多了 mce_src="url" …… 没有太仔细的研究,大致就是这样。

在实践中摸索到了一些经验,也就有了相应的解决方法。(注:以下均为在源代码编辑状态下的代码)

  • 代码中的回车应该使用<br>,连续空格(比如缩进)应该使用 &amp;nbsp;(或 &amp;#32;
  • html标记中,应该把 < 替换为 &amp;lt;(或 &amp;#60;),> 替换为 &amp;gt;(或 &amp;#62;
  • \n(换行经常用到)应该替换为 \\n(或 &amp;#92;n
  • src="url"(<script>和<iframe>标记中用到比较多)中的 src 应该替换为 &amp;#115;&amp;#114;&amp;#99;

其实以上几点可以归纳为一点,那就是:把敏感字符替换成“处理”过的unicode值。正常的unicode值为 &#65; 的形式(& + # + ascii码值 + ;),把其中的 & 再次替换为 &amp; 变成 &amp;#65; 的形式,就大功告成了。

附:要查看各个字符的ascii码值表,这儿有一份。