如何正确编码RSS description标签内含特殊符号的链接
RSS 2.0 description标签放置含特殊字符链接的处理方案
核心结论
你当前的RSS结构已经使用<![CDATA[...]]>块包裹description内容,不需要对链接做额外编码或转义,直接把完整的<a>标签原封不动放入CDATA段即可。
具体规则说明
- CDATA段是XML标准里定义的纯文本段,解析器会完全忽略段内的所有特殊字符(包括
<、>、&、引号、URL里%开头的编码串),不会把它们识别为XML语法的一部分,不会出现解析报错。 - 你链接里的
%3A是URL中冒号的标准百分号编码,属于URL的合法原生内容,不需要做任何修改,更不能二次编码为%253A,否则会导致RSS阅读器识别到错误链接,跳转失败。 - 如果你后续调整写法,不再使用CDATA包裹description内容,才需要对HTML部分做XML实体转义:把
<转成<、>转成>、&转成&、"转成",但依然要保留URL里的%3A不要改动。
正确写法示例
<rss version="2.0"> <channel> <title>Noticias ahora</title> <link>https://www.europapress.es</link> <description>Noticias de actualidad</description> <language>es-ES</language> <item> <guid>GUID</guid> <title>TITLE</title> <description><![CDATA[ <a href="https://it.site.com/place/?symbol=TVC%3AFTMIB" target="_blank" rel="noopener">text</a> ]]></description> <category></category> <link>LINK</link> <pubDate>Tue, 30 Mar 2020 18:12:54</pubDate> </item> </channel> </rss>
常见避坑点
- 不要为了"转义"修改URL本身的内容,
%3A在CDATA内不会被解析器篡改,所有主流RSS阅读器都能正常识别这类带百分号编码的链接。 - CDATA段内部不要出现
]]>字符串,否则会提前终止CDATA块导致解析错误,普通的HTML链接内容不会包含这个串,可以放心使用。
内容的提问来源于stack exchange,提问作者Vladimir Bershov
相关产品推荐
相关产品推荐

