【问题标题】:Ruby on rails escape unicode characters in searchRuby on rails 在搜索中转义 unicode 字符
【发布时间】:2016-04-19 17:01:30
【问题描述】:

有一个文本保存在数据库中,采用编码格式: 例如德语字母

Ü

它存储

Ü

我不知道使用哪种方法进行这种转换。在执行搜索时,我需要将字符 Ü 转换为 Ü 值,这在 ROR 中如何轻松完成? 以下不起作用:

'Ü'.html_safe -> Ü
ERB::Util.html_escape('Ü') -> Ü

【问题讨论】:

  • 你的数据库中设置了什么编码?
  • 没关系。我在不同的列中有数据库值ÜÜ。从Ü -> 到Ü 的转换不依赖于数据库编码。与此无关。
  • 没错!知道您的数据库列可以并且已经拥有Ü,我们可以排除 ActiveRecord 内部。这给我们留下了数据输入:视图和控制器。 Ü 列的数据是否来自用户输入?如果您修复了那一点,您将解决问题的原因。否则,如果您只想快速修复或解决问题,请查看htmlentities gem。它会为您完成转换。

标签: ruby-on-rails character-encoding html-escape-characters


【解决方案1】:

使用htmlentities gem。

从 HTML 实体转换为 UTF-8 字符:

require 'htmlentities'
HTMLEntities.new.decode('Ü')  # => "Ü"

从 UTF-8 到 HTML 实体:

require 'htmlentities'
HTMLEntities.new.encode("Ü", :named)  # => "Ü"

【讨论】:

  • id 无效。我需要从Ü 转换为Ü。所以以下解决方案也不起作用:HTMLEntities.new.encode('Ü') -> Ü 但我需要Ü
  • 我的错,我以为你想要反过来。更新了我的答案。
猜你喜欢
  • 2010-11-05
  • 2011-09-02
  • 1970-01-01
  • 2015-09-03
  • 1970-01-01
  • 2012-07-19
  • 2012-07-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多