URL кодированные ссылки в RSS разрывает ссылки - PullRequest
2 голосов
/ 18 апреля 2011

Для того, чтобы иметь действительный XML-канал RSS, мне нужно url-кодирование моих ссылок, которые содержат '&' в строке запроса. Однако, когда человек просматривает RSS-канал в браузере, ссылки не декодируются, поэтому при нажатии на ссылку полученная страница не работает, поскольку параметры строки запроса не читаются правильно.

* 1003 Е.Г. *

http://www.mysite.com? Foo1 = bar1 & foo2 = bar2 , при просмотре в браузере как http://www.mysite.com? Foo1 = bar1% 26foo2 = bar2 , параметр foo1 принимается за bar1% 26foo2 = bar2 вместо разделения фруктов и напитков на два отдельных параметра.

Заключение моих ссылок в теги и не кодирование их работает, но затем в моем фиде MRSS есть поля, например, где включение тега нарушает XML.

Как правильно кодировать ссылки, чтобы все работало?

1 Ответ

4 голосов
/ 18 апреля 2011

Краткий ответ

использовать &amp

Длинный ответ

Если вы посмотрите на https://stackoverflow.com/feeds/tag/xml,, запись для этого вопроса выглядит так, и ваша примерная ссылка работает нормально при просмотре в I.E.

Ваш образец ссылки

http://www.mysite.com?foo1=bar1&foo2=bar2

Ваша запись

<entry>
        <id>/4309503/url-kodirovannye-ssylki-v-rss-razryvaet-ssylki</id>
        <re:rank scheme="http://stackoverflow.com">0</re:rank>
        <title type="text">URL encoded links in RSS breaks links</title>
        <category scheme="https://stackoverflow.com/feeds/tag/xml/tags" term="xml"/><category scheme="https://stackoverflow.com/feeds/tag/xml/tags" term="rss"/><category scheme="https://stackoverflow.com/feeds/tag/xml/tags" term="urlencode"/>
        <author>
            <name>Choy</name>
            <uri>https://stackoverflow.com/users/252529</uri>
        </author>
        <link rel="alternate" href="/4309503/url-kodirovannye-ssylki-v-rss-razryvaet-ssylki" />
        <published>2011-04-18T15:30:11Z</published>
        <updated>2011-04-18T15:35:43Z</updated>
        <summary type="html">
            &lt;p&gt;In order to have a valid XML RSS feed, I need to url encode my links which contain &#39;&amp;amp;&#39; in the query string.  However, when a person views the RSS feed in a browser, the links are not decoded, so when they click on the link the resulting page is broken because the query string parameters are not being read correctly.&lt;/p&gt;

&lt;p&gt;E.g.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.mysite.com?foo1=bar1&amp;amp;foo2=bar2&quot; rel=&quot;nofollow&quot;&gt;http://www.mysite.com?foo1=bar1&amp;amp;foo2=bar2&lt;/a&gt;, when viewed in the browser as &lt;a href=&quot;http://www.mysite.com?foo1=bar1%26foo2=bar2&quot; rel=&quot;nofollow&quot;&gt;http://www.mysite.com?foo1=bar1%26foo2=bar2&lt;/a&gt;, the parameter foo1 is being taken as bar1%26foo2=bar2 instead of splitting fruit and drink into two separate parameters.&lt;/p&gt;

&lt;p&gt;Wrapping my links in  tags and not encoding them work, but then in my MRSS feed I have fields such as  where including a  tag breaks the XML.&lt;/p&gt;

&lt;p&gt;How can I go about correctly encoding my links so that everything works?&lt;/p&gt;

        </summary>
    </entry>
...