module UTF8
  ##
  # Checks that a string is valid UTF-8 by trying to convert it to UTF-8
  # using the iconv library, which is in the standard library.
  if String.new.respond_to?("valid_encoding?")
    def self.valid?(str)
      return true if str.nil?
      return str.valid_encoding?
    end
  else
    require 'iconv'

    def self.valid?(str)
      return true if str.nil?
      Iconv.conv("UTF-8", "UTF-8", str)
      return true
    rescue
      return false
    end
  end
end
