def clean_message(message)
      if @server_version && @server_version > 50500
        message.encode(ENCODE_OPTS)
      else
        message.encode(Encoding::UTF_8, ENCODE_OPTS)
      end
    end
def clean_message(message)
      if @server_version && @server_version > 50500
        message.encode(ENCODE_OPTS)
      else
        message.encode(Encoding::UTF_8, ENCODE_OPTS)
      end
    end
In MySQL 5.5+ error messages are always constructed server-side as UTF-8
 then returned in the encoding set by the `character_set_results` system
 variable.

 See http://dev.mysql.com/doc/refman/5.5/en/charset-errors.html for
 more context.

 Before MySQL 5.5 error message template strings are in whatever encoding
 is associated with the error message language.
 See http://dev.mysql.com/doc/refman/5.1/en/error-message-language.html
 for more information.

 The issue is that the user-data inserted in the message could potentially
 be in any encoding MySQL supports and is insert into the latin1, euckr or
 koi8r string raw. Meaning there's a high probability the string will be
 corrupt encoding-wise.

 See http://dev.mysql.com/doc/refman/5.1/en/charset-errors.html for
 more information.

 So in an attempt to make sure the error message string is always in a valid
 encoding, we'll assume UTF-8 and clean the string of anything that's not a
 valid UTF-8 character.

 Returns a valid UTF-8 string.