特殊文字が含まれている場合、データベースのフィールドに文字列を保存すると、奇妙な動作が見られます。この例では「á」または「\xE1」
したがって、フィールドが「TESTá」の場合、保存時に保持されるフィールドは「TEST」です。
さらに心配なのは、フィールドが必須として検証されている場合です。そして、「á」に設定すると、検証はパスしますが、保存時に空の文字列が保存されます。永続化されたレコードを無効にしています!
私のデータベースのエンコーディングは UTF-8 なので、これはエンコーディングの問題だと思います。
実際、コンソールで簡単なテストを試みると、次のエラーが発生します。
» "TEST\xE1F".encode('UTF-8')
Encoding::UndefinedConversionError: "\xE1" ASCII-8BIT から UTF-8 へ
では、レール/アクティブレコードで特殊文字を正しく永続化するにはどうすればよいですか?
助けてくれてありがとう。