您需要使用与您需要的匹配的不同编码对象。例如,使用字符串 "[NON-ASCII]" 对于编码和解码的替换,您可以使用:
"[NON-ASCII]"
var encoding = Encoding.GetEncoding( "US-Ascii", new EncoderReplacementFallback("[NON-ASCII]"), new DecoderReplacementFallback("[NON-ASCII]")); File.WriteAllText( _param.pathFileOut + "\\" + _param.batch_id + DateTime.Now.ToString("yyyyMMdd") + ".txt", _fileOut, encoding);
应该很明显,我们不能使用一个字符 EncoderReplacementFallback 无法使用相关编码进行编码。如果我们尝试这个,它会被接受但如果需要更换则会抛出。我们可以将这些字符用于解码器:
EncoderReplacementFallback
var encoding = Encoding.GetEncoding( "US-Ascii", new EncoderReplacementFallback("?"), new DecoderReplacementFallback("?")); Console.WriteLine(encoding.GetString(new byte[]{234})); // Prints ? var bytes = encoding.GetBytes("?"); // Throws Argument Exception: // Recursive fallback not allowed for character \uFFFD. // Parameter name: chars