2

我参与的 Rails 3.2 应用程序有一个方法可以将用户输入强制转换为 UTF-8。

require "iconv"


def normalize(user_input_text)
  Iconv.new('UTF-8//IGNORE', 'UTF-8').iconv(user_input_text.dup)
end

它基本上以 UTF-8 对字符串进行编码,并忽略无法转码的字符。

但是,不是所有通过表单进入 Rails 的用户数据都会被 UTF-8 编码吗?

换句话说,这段代码难道不是似是而非且不必要的吗?

4

1 回答 1

1

这些资源表明您确实是对的。

现在绝大多数 Web 输入都是 UTF-8,我们将入站参数设置为 UTF-8。这将消除 ASCII-8BIT 和 UTF-8 之间编码不兼容的许多情况。

https://github.com/rails/rails/commit/25215d7285db10e2c04d903f251b791342e4dd6a

Rails 3 通过做很多事情很好地解决了这个问题,包括将参数解释为 UTF-8 并为 Internet Explorer 添加解决方法

http://jasoncodes.com/posts/ruby19-rails2-encodings

于 2013-02-15T01:31:29.733 回答