5 # error message when invalid UTF-8 is detected
6 @@invalid_utf8_message = " is invalid UTF-8"
9 # validation method to be included like any other validations methods
10 # in the models definitions. this one checks that the named attribute
11 # is a valid UTF-8 format string.
12 def validates_as_utf8(*attrs)
13 validates_each(attrs) do |record, attr, value|
14 record.errors.add(attr, @@invalid_utf8_message) unless valid_utf8? value
19 # Checks that a string is valid UTF-8 by trying to convert it to UTF-8
20 # using the iconv library, which is in the standard library.
22 return true if str.nil?
23 Iconv.conv("UTF-8", "UTF-8", str)