gpt4 book ai didi

c# - 如何更改中的回退字符

转载 作者:太空宇宙 更新时间:2023-11-03 22:36:11 24 4
gpt4 key购买 nike

我想从一个字符串创建一个纯 ASCII 文本文件。所以我使用 File.WriteAllText 和编码 Encoding.ASCII:

File.WriteAllText(_param.pathFileOut + "\\" + _param.batch_id + DateTime.Now.ToString("yyyyMMdd") + ".txt", _fileOut, Encoding.ASCII);

当遇到非ASCII字符时,将他转换为'?'。我如何指定 Encoding.ASCII 或 File.WriteAllText 使用除“?”之外的其他字符作为后备角色?

最佳答案

您需要使用与您的需要相匹配的不同编码对象。例如,要使用字符串 "[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 中使用无法使用相关编码进行编码的字符。如果我们尝试这样做,它会被接受,但如果需要更换则会抛出。我们可以将这样的字符用于解码器:

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

关于c# - 如何更改中的回退字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55049637/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com