c#写字"ISO-8859-1"在大写

本文关键字:quot ISO-8859-1 写字 | 更新日期: 2023-09-27 18:07:15

我找了很多地方都没有找到答案。

我正在使用XmlSerializer生成XML,并且需要使用ISO-8859-1编码。我是这样做的:

var encoding = Encoding.GetEncoding("ISO-8859-1");
using (StreamWriter writer = new StreamWriter(outfile, appendMode, encoding))
{
    XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
    ns.Add("", "");
    serializer.Serialize(writer, DTE, ns);
    writer.Close();
}

xml是可以的,但是我需要发送xml的系统在编码词中是区分大小写的,所以它只接受我的文件,如果它说encoding="ISO-8859-1",当它说"ISO-8859-1"时,它不接受。

我能做什么?

c#写字"ISO-8859-1"在大写

仅供参考(以及我未来的自己),以下是Jon Skeet评论中描述的解决方案:

internal class Iso88591Encoding : Encoding
{
    private readonly Encoding _encoding;
    public override string WebName => _encoding.WebName.ToUpper();
    public Iso88591Encoding()
    {
        _encoding = GetEncoding("ISO-8859-1");
    }
    public override int GetByteCount(char[] chars, int index, int count)
    {
        return _encoding.GetByteCount(chars, index, count);
    }
    public override int GetBytes(char[] chars, int charIndex, int charCount, byte[] bytes, int byteIndex)
    {
        return _encoding.GetBytes(chars, charIndex, charCount, bytes, byteIndex);
    }
    public override int GetCharCount(byte[] bytes, int index, int count)
    {
        return _encoding.GetCharCount(bytes, index, count);
    }
    public override int GetChars(byte[] bytes, int byteIndex, int byteCount, char[] chars, int charIndex)
    {
        return _encoding.GetChars(bytes, byteIndex, byteCount, chars, charIndex);
    }
    public override int GetMaxByteCount(int charCount)
    {
        return _encoding.GetMaxByteCount(charCount);
    }
    public override int GetMaxCharCount(int byteCount)
    {
        return _encoding.GetMaxCharCount(byteCount);
    }
}

为什么不直接以字符串形式获取XML内容,然后使用字符串。将ISO-8859-1替换为ISO-8859-1