【问题标题】:How to write ISO code accent in XML file?如何在 XML 文件中编写 ISO 代码口音?
【发布时间】:2018-04-10 18:53:34
【问题描述】:

我想在带有相应 ISO 代码的 XML 文本文件中写入拉丁重音符号。 例如 é 在文件上被 é 替换。 我的问题是我的第一个 & 被 Xml.Linq 转义。 所以结果是&#amp;233;

internal void SaveCurrentFile(XElement root)
{
    var encoding = Encoding.GetEncoding("ISO-8859-1");
    XmlWriterSettings xmlWriterSettings = new XmlWriterSettings
    {
        Indent = true,
        OmitXmlDeclaration = false,
        Encoding = encoding
    };
    using (var writer = XmlWriter.Create(GetFolderPath() + "test.xml", xmlWriterSettings))
    {
        root.Save(writer);
    }
}

我在 XmlWriterSettings 中没有看到任何可以帮助我的选项。

感谢您的帮助。

【问题讨论】:

  • 你实际上不需要做任何事情。只要正常写字符,并确保使用UTF8。
  • 你可以写Encoding.ASCII。如果这样做,所有非 ASCII Unicode 字符都将被转义,如 Escaping unicode string in XmlElement despite writing XML in UTF-8 所示。
  • 我无法使用 UTF8(由于个人限制),但使用 ASCII 编码看起来不错。谢谢!
  • 这个限制是怎么产生的? XML 文本是 Unicode 字符,与文档编码无关。
  • XML 文件被游戏使用。我无法控制它如何读取它,并且我已经尝试提供 Utf8 文件但它不起作用。

标签: c# xml linq diacritics


【解决方案1】:

数字字符实体引用是 Unicode 代码点。例如,
🚲为? (U+1F6B2)。 é将是 é (U+00E9)。数字字符实体引用通常仅在文档编码不支持特定 Unicode 代码点时使用。 XML 编写器会为您处理这些问题。

因此,如果您希望 é 作为数字字符实体发出,您只需使用不支持它的文档编码。 ASCII 是一个。但是,它可能是十六进制 (é) 而不是十进制 (é)。

【讨论】:

  • 没错。我已经看到输入是 (é) 但十六进制对我来说也很好。
猜你喜欢
  • 2010-09-13
  • 1970-01-01
  • 2011-08-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多