如何将 UTF-8 解码为 HTML 标签

路易斯·E

我的数据库中保存了一个 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 解码等Nokogiri::HTML.parseJSON.parse但它们都没有完成这项工作。

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

汤姆·罗德

这里有一个快速的解决方法:

input_string.gsub(/\\u(\h{4})/) { [$1.to_i(16)].pack('U') }

使用上面给出的示例输入,结果如下:

"<p style=\\\"text-align: center; opacity: 1;\\\"><strong><span style=\\\"font-size: 18pt;\\"

解释:

\u003c == <. 左侧是转义的 unicode 字符;这与\\u003c, 是一个字面反斜杠不同,后跟u003c.

正则表达式\\u(\h{4})将匹配任何出现的 this (\h代表“十六进制”,相当于[0-9a-fA-F]),Array#pack并将二进制序列转换为(在这种情况下)一个 UTF-8 字符。


当然,理想情况下,您应该从根本上解决问题,而不是像这样改造解决方法。但是,如果这超出了您的控制范围,那么解决方法就足够了。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将json字符串解码为UTF-8?

如何将字符 195 和 192 输出为 HTML UTF8?

python3将str解码为utf8

如何将熊猫混合/混合字节/字符串系列转换/解码为字符串或utf-8

如何将utf8编码的html嵌入元素

如何将HTML标签显示为纯文本

颤动的背景图片“无法将字节解码为UTF-8”

将任意 UTF8 字节块解码为字符串是否安全?

Perl Websocket Server在Chrome中导致“无法将文本框架解码为UTF-8”

根据.procmailrc文件中的文本将utf8解码为ISO-8859-1邮件

将字符串从UTF-8解码为Windows1256

无法将字节数组编码为UTF8,然后将其解码回字节

将 UTF-8 转义字符读取/解码为本地字符

ASP:我无法将某些字符从utf-8解码为iso-8859-1

将 imap 主题行中的 Windows-1252 字符解码为 UTF-8

如何将HTML解码为字符串?

如何从文件解码utf-8

为什么不能将\ xDF(ß)解码为UTF-8?

在 Python 中将非标准字符解码为 UTF 8

python可以编码为utf-8,但无法解码

如何将VIM的默认编码设置为UTF-8?

Spring Integration Email出站网关:如何将内容编码设置为UTF-8?

如何将JSF消息编码设置为UTF-8?

如何将Google App Engine Java Content-Type设置为UTF-8

如何将记事本的默认unicode设置为UTF8?

如何将 Swift 算术运算符加号 (+) 正确编码为 utf8 数据?

如何将Notepad2设置为UTF-8而不是ANSI?

当从libwebsockets接收时,Chrome浏览器显示“无法将文本框架解码为UTF-8”

Java字符串UTF-8将0xFF解码为0xC3BF