ruby on rails-特殊字符呈现不正确



在表单字段中,用户输入了以下文本:

Número Telefónico

尽管文本在表单字段中表现良好(即使在刷新后),但当使用<%= @foo.text %>:在不同页面上输出时,相同的文本(提交并保存到数据库)看起来是这样的

Néºmero Telefé³nico

(我认为)我已经确保了UTF-8编码的一致使用:

irb(main):014:0> "Número Telefónico".encoding
=> #<Encoding:UTF-8>

通过psql:

=> SHOW SERVER_ENCODING;
 server_encoding 
-----------------
 UTF8

在HTML方面:

<meta http-equiv="content-type" content="text/html; charset=UTF-8" />

但这些角色仍然无法正确渲染。如果我能提供更多信息,请告诉我。

更新

只有当通过Liquid模板引擎渲染时,文本才会出现问题。我将在Liquid的Github上发布一个问题,并将用任何新信息更新这个问题(希望能得到答案)。

更新2

以下是相关的Github问题。

真正的罪魁祸首最终是Nokogiri,而不是Liquid。Nokogiri用于解析和操作最终将通过Liquid的HTML。然而,在Nokogiri使用HTML的时候,它混淆了编码(尤其是在使用doc.replace时),从而混淆了特殊字符。

这个特定问题的相关问题和答案(我最终使用了下面第二个链接的解决方案):

  • 使用Nokogiri替换时的编码问题
  • https://github.com/sparklemotion/nokogiri/issues/587

相关内容

  • 没有找到相关文章

最新更新