我正在尝试通过模板(C#)读取嵌入在多媒体组件中的 XML 文件内容。XML 文件包含少量 UTF-8 字符。当我读取 xml 内容时,输出将 UTF-8 字符转换为一些垃圾字符(?符号或矩形框)。下面是我在 C# 模板中使用的代码片段。
代码 1:
Component xmlMultimediaComponent = (Component)XMLMMSRepositoryObject;
// read xml in multimedia component into a string
UTF8Encoding encoding = new UTF8Encoding();
byte[] binary = xmlMultimediaComponent.BinaryContent.GetByteArray();
string navXmlContent = (binary != null)
? UTF8Encoding.UTF8.GetString(binary, 0, binary.Length)
: string.Empty;
代码 2:
using (MemoryStream ms = new MemoryStream())
{
xmlMultimediaComponent.BinaryContent.WriteToStream(ms);
ms.Seek(0, SeekOrigin.Begin);
using (var streamReader = new StreamReader(ms, Encoding.UTF8))
{
string output = streamReader.ReadToEnd();
....
}
}
在上述两种情况下,输出都包含垃圾字符(用于 UTF-8 编码)。
知道如何将相同的 UTF-8 内容获取到 Tridion 多媒体组件中 XML 文件的字符串输出中。
注意:多媒体组件中的 XML 文件以 UTF-8 编码保存。
提前致谢。