Ruby 将 html 标签显示为字符串
Posted
技术标签:
【中文标题】Ruby 将 html 标签显示为字符串【英文标题】:Ruby show html tag as string 【发布时间】:2021-11-04 00:22:32 【问题描述】:我有一个 Rails API,它将一些数据显示为 JSON。当用户输入明文时,响应看起来不错。但是当我在输入中添加 html 标签或特殊字符(如“”)时,它会将它们转换为 unicode 字符。无论用户添加什么,我都想将整个内容呈现为字符串。我尝试过使用to_s
,但仍然无法将这些位转换为字符串。
result.each do |row|
i = row["i"].to_s
j = row["j"].to_s
obj[i][j] =
obj[i][j]["name"] = row["name"].to_s
end
Given: <p>name</p>
Output :\u003cp\u003ename\u003c/p\u003e
Expected output: <p>name</p>
【问题讨论】:
不确定为什么它返回 Unicode 字符。您是否尝试过强制编码为 UTF-8 ?另外,我正在考虑使用raw(<String>)
或<String>.html_safe
@Sumak 是的,实际上显示了相同的结果。不将其解析为 html 标签
我不明白您认为您将如何以 JSON 格式传输 "
而不会因为它是保留字符而对其进行转义?这闻起来像 X&Y 问题。
【参考方案1】:
您将数据显示为 JSON。这就是这些字符在 JSON 字符串中的样子。
'<p>name</p>'.to_json
=> "\"\\u003cp\\u003ename\\u003c/p\\u003e\""
JSON.parse "\"\\u003cp\\u003ename\\u003c/p\\u003e\""
=> "<p>name</p>"
【讨论】:
以上是关于Ruby 将 html 标签显示为字符串的主要内容,如果未能解决你的问题,请参考以下文章
在HTML中显示格式化的JSON,而无需JavaScript(RubySinatra)。