         }
         text.write(self.terminator)
 
-        guard let data = text.data(using: self.encoding)
+        /// Since we want to make sure messages are printed, we allow
+        /// lossy conversion so that even if an invalid encoding can
+        /// still be printed minus the un-encodable characters.
+        ///
+        guard let data = text.data(using: self.encoding, allowLossyConversion: true)
             else { return nil }
 
         return Array(data)

            return formatter
        }()

        public static let options: Set<Option> = []

        ///

    ///     - encoding: The Character encoding to use for the formatted entry.
    ///     - terminator: A string that will be output at the end of the output to terminate the entry.
    ///
    public init(template: String = Default.template, dateFormatter: DateFormatter = Default.dateFormatter, options: Set<Option> = Default.options, encoding: String.Encoding = Default.encoding, terminator: String = Default.terminator) {
        self.dateFormatter = dateFormatter
        self.encoding      = encoding
        self.terminator    = terminator

        self.controlCharacterAction = options.reduce(nil, { (current, option) -> Option.Action? in
            guard case let .controlCharacters(action) = option
