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(&lt;String&gt;)&lt;String&gt;.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 标签显示为字符串的主要内容,如果未能解决你的问题,请参考以下文章

[HTML5]HTML中使用ruby标签添加音标或者注释

[HTML5]HTML中使用ruby标签添加音标或者注释

在HTML中显示格式化的JSON,而无需JavaScript(RubySinatra)。

在 Ruby on Rails 中为帖子添加标签

是否可以将纤细组件的(最终结果)HTML 代码呈现为字符串(转义/显示原始 HTML 代码)?

设置从 HTML 字符串生成的 UITableViewCell 标签