gpt4 book ai didi

c# - 如何在 C# 中解码包含 XML 文档的 base64 编码字符串,该文档包含带有重音符号 (á,é,í,ó,ú) 的字符?

转载 作者:行者123 更新时间:2023-11-30 16:43:15 24 4
gpt4 key购买 nike

如何解码包含拉丁字母 (á,é,í,ó,ú) 的 XML 文档的 base64 编码字符串?

我知道这个问题 How do I encode and decode a base64 string?但所提供的解决方案不适用于带有重音符号的字母。

到目前为止我已经尝试过:

xmlBase64 = System.Text.Encoding.ASCII.GetString(System.Convert.FromBase64String(XmlDoc));
xmlBase64 = System.Text.Encoding.Unicode.GetString(System.Convert.FromBase64String(XmlDoc));
xmlBase64 = System.Text.Encoding.UTF8.GetString(System.Convert.FromBase64String(XmlDoc));
xmlBase64 = System.Text.Encoding.UTF32.GetString(System.Convert.FromBase64String(XmlDoc));

但在所有情况下,拉丁字母(西类牙字符)都被替换为 ? 或类似字符。

编辑:

这是 base64 encoded string

这是 Decoded string

最佳答案

查看 System.Convert.FromBase64String(XmlDoc) 生成的字节很有帮助。

我已经这样做了,并查看了原始字符串中的单词“metálicas”(这只是我发现的第一个带有重音的单词)。这部分字符串被转换为字节数组 6D 65 74 E1 6C 69 63 61 73

从那个字节数组中很容易看出两件事:

  • 这是单字节编码
  • 它不是 UTF-8:在 UTF-8 中,大于 7F 的字节永远不会单独出现,总是以 2-​​4 个为一组。

从那里我猜它会是某种形式的扩展 ASCII,Windows-1252似乎工作。尝试以下操作:

xmlBase64 = System.Text.Encoding.GetEncoding(1252).GetString(System.Convert.FromBase64String(XmlDoc));

关于c# - 如何在 C# 中解码包含 XML 文档的 base64 编码字符串,该文档包含带有重音符号 (á,é,í,ó,ú) 的字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45359611/

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