首页 > 解决方案 > 如何将 UTF-8 解码为 HTML 标签

问题描述

我的数据库中保存了一个 HTML 文档,如下所示:

\\u003cp style=\\\"text-align: center; opacity: 1;\\\"\\u003e\\u003cstrong\\u003e\\u003cspan style=\\\"font-size: 18pt;\\\

我知道,这很丑陋,而且我知道,这不是理想的方式,但这是一个遗留系统。

我的任务是获取所有这些 HTML 并将它们转换为 Google Docs 中的文档。实际上,Google Docs 可以很好地将 HTML 解析为其内部格式,但 HTML 必须是有效的 HTML,<p>而不是\\u003cp.

我正在尝试将此字符串转换/解码/解析/任何内容转换为有效的 HTML,但到目前为止,没有任何运气。

我已经尝试过的事情

htmlentities gem, CGI decode,Nokogiri::HTML.parseJSON.parse他们都没有完成这项工作。

我也试过string.encode(xxxx)但也没有运气。我真的希望这种.encode方法能做到,但我无法让它工作,也许我使用了错误的编码?(我尝试使用所有ISO-xxx编码)

标签: htmlrubyencoding

解决方案


使用Array#pack

string = "\\u003cp style=\\\"text-align: center; opacity: 1;\\\"\\u003e\\u003cstrong\\u003e\\u003cspan style=\\\"font-size: 18pt;\\"

string.gsub(/\\u(....)/) { [$1.hex].pack("U") }
# => "<p style=\\\"text-align: center; opacity: 1;\\\"><strong><span style=\\\"font-size: 18pt;\\"

推荐阅读