gpt4 book ai didi

c# - 文本解码问题

转载 作者:太空宇宙 更新时间:2023-11-03 20:41:12 27 4
gpt4 key购买 nike

给定这个输入字符串:

=?ISO-8859-1?Q?TEST=2C_This_Is_A_Test_of_Some_Encoding=AE?=

还有这个函数:

private string DecodeSubject(string input)
{
StringBuilder sb = new StringBuilder();
MatchCollection matches = Regex.Matches(inputText.Text, @"=\?(?<encoding>[\S]+)\?.\?(?<data>[\S]+[=]*)\?=");
foreach (Match m in matches)
{
string encoding = m.Groups["encoding"].Value;
string data = m.Groups["data"].Value;

Encoding enc = Encoding.GetEncoding(encoding.ToLower());
if (enc == Encoding.UTF8)
{
byte[] d = Convert.FromBase64String(data);
sb.Append(Encoding.ASCII.GetString(d));
}
else
{
byte[] bytes = Encoding.Default.GetBytes(data);
string decoded = enc.GetString(bytes);
sb.Append(decoded);
}
}

return sb.ToString();

}

结果与从输入字符串中提取的数据相同。这段文本没有正确解码,我做错了什么?

更新

所以我有这个解码引用打印的代码:

public string DecodeQuotedPrintable(string encoded)
{
byte[] buffer = new byte[1];
return Regex.Replace(encoded, "=(\r\n?|\n)|=([A-F0-9]{2})", delegate(Match m)
{
if (byte.TryParse(m.Groups[2].Value, NumberStyles.HexNumber, CultureInfo.InvariantCulture, out buffer[0]))
{
return Encoding.ASCII.GetString(buffer);
}
else
{
return string.Empty;
}
});
}

这只留下下划线。我是手动将它们转换为空格(替换(“_”,“”)),还是我需要做其他事情来处理它?<​​/p>

最佳答案

看来您没有完全理解输入行的格式。在这里查看:http://www.ietf.org/rfc/rfc2047.txt格式为:encoded-word = "=?"字符集“?”编码“?”编码文本 "?="

所以你必须

  1. 提取字符集(根据 .net 编码)。不只是 UTF8 或默认 (Utf16)
  2. 提取编码:B 代表 base64 Q 代表 quoted-printable(你的情况!)
  3. 然后解码为字节,然后解码为字符串

关于c# - 文本解码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2579128/

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