登录
首页 >  Golang >  Go问答

标题:解除 RSS 中的双重转义

来源:stackoverflow

时间:2024-03-26 09:18:40 280浏览 收藏

一些 RSS 提要中存在双重转义的标题问题,导致标题显示异常。为了正确解码这些标题,需要使用特定序列转义符号 &,但对于包含 HTML 转义序列的内容,可能需要进行额外的转义。可以使用 HTML.UnescapeString() 方法解析 XML 并将其解码为 HTML,以获得人类可读的文本。

问题内容

我收到一些带有奇怪转义标题的 rss,例如:

S&P 500 : Wall Street amorce un rebond, Binance fait l'objet d'une enquête de la SEC

整个rss:https://www.dailyfx.com/francais/feeds/actualites-marches-financiers

opera浏览器正确显示此类新闻标题如下

标准普尔 500 指数:华尔街的爱与重新结合,币安已成为现实 sec 会议

对于我通常收到一次转义消息的情况以及上述情况,如何正确转义消息?


正确答案


序列 & 编码 & 符号。但是,如果内容应该是 html,则可能包含更多 html 转义序列。

例如,如果要显示的文本包含 &,则在 html 中它将被编码为 &。如果将此文本插入到 xml 中,则还必须对第一个字符 & 进行转义,这会导致 &

要获得人类可读的解码文本,您必须解析 xml 并将其解码为 html。您可以使用html.UnescapeString()

例如:

const src = `s&p 500 : wall street amorce un rebond, binance fait l'objet d'une enquête de la sec`

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&P 500 : Wall Street amorce un rebond, Binance fait l'objet d'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

到这里,我们也就讲完了《标题:解除 RSS 中的双重转义》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于的知识点!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>