2

私が貢献しているRails3.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 に答える