Atom驗證時報錯"not well-formed"

來源:互聯網
上載者:User

我在SegmentFault的rss訂閱支援裡使用了atom標準,我仔細閱讀過這一標準,而且以前也開發過很多atom訂閱的程式,所以看起來似乎沒什麼困難,而且開發出來在閱讀器(google reader, etc.)裡面也表現良好。但是當我使用w3c的feed驗證時它給我報了這樣一個錯誤(驗證地址: http://validator.w3.org/feed/check.cg...)

這是一個很令人困惑的錯誤,因為通常not well-formed錯誤可能會發生在一些特殊字元沒有escape的時候,但是我已經在輸出之前對內容做了以下處理

function escape($string) {    return str_replace(array('&','"',"'",'<','>'),        array('&','"',''','<','>'),        $string);}

所以輸出的內容是不會有特殊字元的問題。我嘗試把內容放在裡面括起來,但是都無效。

更令人奇怪的是,似乎這個錯誤只是出現在這篇文章中(也就是只針對特定的字元),在不包涵這篇文章的feed中驗證就會通過,比如: http://validator.w3.org/feed/check.cg...。

我自己懷疑是atom標準對UTF-8的編碼支援有問題,或者我還有什麼地方沒有設定好,不知道有沒有好的解決辦法。

回複內容:

我在SegmentFault的rss訂閱支援裡使用了atom標準,我仔細閱讀過這一標準,而且以前也開發過很多atom訂閱的程式,所以看起來似乎沒什麼困難,而且開發出來在閱讀器(google reader, etc.)裡面也表現良好。但是當我使用w3c的feed驗證時它給我報了這樣一個錯誤(驗證地址: http://validator.w3.org/feed/check.cg...)

這是一個很令人困惑的錯誤,因為通常not well-formed錯誤可能會發生在一些特殊字元沒有escape的時候,但是我已經在輸出之前對內容做了以下處理

function escape($string) {    return str_replace(array('&','"',"'",'<','>'),        array('&','"',''','<','>'),        $string);}

所以輸出的內容是不會有特殊字元的問題。我嘗試把內容放在裡面括起來,但是都無效。

更令人奇怪的是,似乎這個錯誤只是出現在這篇文章中(也就是只針對特定的字元),在不包涵這篇文章的feed中驗證就會通過,比如: http://validator.w3.org/feed/check.cg...。

我自己懷疑是atom標準對UTF-8的編碼支援有問題,或者我還有什麼地方沒有設定好,不知道有沒有好的解決辦法。

你的代碼沒有問題,我仔細看了下你出現問題的那篇文章,開始沒有絲毫頭緒,後來乾脆把它copy到vim裡來看,然後我發現了這個

看到沒有,在"一種"和"如芒在背"之間有一個不可見字元,這種字元會引起第三方驗證程式的編碼錯誤,但是基本上不會影響閱讀器的使用。去掉這個字元應該就沒有問題了。這種字元一般都是切換IME時出來的。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.