# File lib/haml/util.rb, line 108
      def check_encoding(str)
        if str.valid_encoding?
          # Get rid of the Unicode BOM if possible
          if str.encoding.name =~ /^UTF-(8|16|32)(BE|LE)?$/
            return str.gsub(Regexp.new("\\A\uFEFF".encode(str.encoding.name)), '')
          else
            return str
          end
        end

        encoding = str.encoding
        newlines = Regexp.new("\r\n|\r|\n".encode(encoding).force_encoding("binary"))
        str.force_encoding("binary").split(newlines).each_with_index do |line, i|
          begin
            line.encode(encoding)
          rescue Encoding::UndefinedConversionError => e
            yield <<MSG.rstrip, i + 1
Invalid #{encoding.name} character #{e.error_char.dump}
MSG
          end
        end
        return str
      end