英文:
Unescape twice escaped title in rss
问题
我得到了一些带有奇怪转义标题的RSS,例如:
<title>S&amp;amp;P 500 : Wall Street amorce un rebond, Binance fait l&amp;apos;objet d&amp;apos;une enquête de la SEC</title>
整个RSS链接:https://www.dailyfx.com/francais/feeds/actualites-marches-financiers
Opera浏览器正确显示这样的新闻标题如下:
> S&P 500 : Wall Street amorce un rebond, Binance fait l'objet d'une
> enquête de la SEC
对于我通常接收到的一次转义的新闻和上述情况,我应该如何正确取消转义新闻标题?
英文:
I got some rss with strange escaped titles, for example:
<title>S&amp;amp;P 500 : Wall Street amorce un rebond, Binance fait l&amp;apos;objet d&amp;apos;une enquête de la SEC</title>
the whole rss: https://www.dailyfx.com/francais/feeds/actualites-marches-financiers
opera browser shows such news titles correctly as follows
> S&P 500 : Wall Street amorce un rebond, Binance fait l'objet d'une
> enquête de la SEC
How can I correctly unescape news for the case normally I receive once-escaped news, and for the case above?
答案1
得分: 2
序列&amp;
编码了一个&
符号。但是,如果内容应该是HTML,那么它可能包含进一步的HTML转义序列。
例如,如果要显示的文本包含&
,在HTML中它将被编码为&amp;
。如果将此文本插入XML中,第一个字符&
也必须被转义,结果是&amp;amp;
。
要获取可读的解码文本,您需要解析XML并将其解码为HTML。您可以使用html.UnescapeString()
。
例如:
const src = `<title>S&amp;amp;P 500 : Wall Street amorce un rebond, Binance fait l&amp;apos;objet d&amp;apos;une enquête de la SEC</title>`
var s string
if err := xml.Unmarshal([]byte(src), &s); err != nil {
panic(err)
}
fmt.Println(s)
s = html.UnescapeString(s)
fmt.Println(s)
这将输出(在Go Playground上尝试):
S&amp;P 500 : Wall Street amorce un rebond, Binance fait l&apos;objet d&apos;une enquête de la SEC
S&P 500 : Wall Street amorce un rebond, Binance fait l'objet d'une enquête de la SEC
英文:
The sequence &amp;
encodes a &
sign. But if the content ought to be HTML for example, that may contain further HTML escape sequences.
For example if the text to display contains &
, in HTML it would be encoded as &amp;
. If you insert this text into an XML, the first character &
also has to be escaped which results in &amp;amp;
.
To get the human-readable decoded text, you have to parse the XML and decode as HTML. You may use html.UnescapeString()
.
For example:
const src = `<title>S&amp;amp;P 500 : Wall Street amorce un rebond, Binance fait l&amp;apos;objet d&amp;apos;une enquête de la SEC</title>`
var s string
if err := xml.Unmarshal([]byte(src), &s); err != nil {
panic(err)
}
fmt.Println(s)
s = html.UnescapeString(s)
fmt.Println(s)
This will output (try it on the Go Playground):
S&amp;P 500 : Wall Street amorce un rebond, Binance fait l&apos;objet d&apos;une enquête de la SEC
S&P 500 : Wall Street amorce un rebond, Binance fait l'objet d'une enquête de la SEC
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论