天天看點

BlogEngine 1.0中的編碼問題及解決方案

似乎有不少朋友在下在BlogEngine 1.0的源代碼之後會發現居然無法正确編譯,因為{SiteRoot}\User Controls\CommentView.cs裡的代碼遇到了錯誤:

  嗯?第一行代碼為什麼單引号沒有封閉?作者怎麼會把一個無法編譯的版本釋出出去呢?其實問題并非那麼簡單,不過我們姑且先将單引号補全吧。

  編譯,通過。進入任意一篇文章。咦,為什麼又出現腳本錯誤了(如下),問題真多啊……

BlogEngine 1.0中的編碼問題及解決方案

  打開用戶端的代碼一看,果然有錯誤:

  官方網站其實也用了Blog Engine,但是進入檢視文章頁面後卻沒有發生問題。找到AddComment方法一看,果然!

  問題出現了,就是這個古怪的字元“¤”壞了事。由于我們的編輯器無法識别出這個字元,是以就将它和後面的引号一起變成了問号。那麼,到底這個符号是做什麼用的呢?我們又該如何修改它呢?

  經過簡單的代碼分析(猜測?)就可以發現,這段代碼的作用是使用AJAX方式添加評論,那個古怪的字元“¤”的作用是分隔一些資訊。因為在添加注釋時,作者名、Email、URL、國家和評論内容會拼接成一個字元串并作為body給post到伺服器端去,是以需要一個在這些文字中都不出現的字元(串)來作為分隔符。伺服器端的代碼也出現了問題,也就是因為它需要使用這種特殊字元拆分用戶端post過來的内容。

  要解決它自然很簡單,我們隻需要使用一段不會出現在文字中的字元(串)即可。我不希望再用這種特殊的字元,是以我最終将兩段代碼改成了如下模樣:

  我使用“?/?/?”替換了那個特殊字元,隻要使用者在回複評論時不輸入這段字元串就好了。

本文轉自 jeffz 51CTO部落格,原文連結:http://blog.51cto.com/jeffz/59881,如需轉載請自行聯系原作者