无法解析unicode字符

时间:2016-05-19 08:30:57

标签: c# filestream xmlreader

我正在尝试使用xml reader读取xml文件。我创建了一个字典来存储mime类型及其相应的扩展名。我已经以这种格式存储了mime-type。 <MimeToExtension MimeType="image/x‑portable‑bitmap" Extension=".pbm" />

当我尝试使用密钥"image/x‑portable‑bitmap"获取值表单字典时。它不会返回任何值。因为"image/x-portable-bitmap"保存为

When pasted the value in notepad++

-字符更改为方括号。我该如何解决这个问题?

FileStream filestream = File.OpenRead(mimeTypeToExtension);
using (XmlReader reader = XmlReader.Create(filestream))
{
    while (reader.Read())
    {
        if (reader.NodeType == XmlNodeType.Element)
        {
            if (reader.HasAttributes && reader.AttributeCount == 2)
            {
                string extension = reader.GetAttribute(0);
                string mimeType = reader.GetAttribute(1);
                if (!string.IsNullOrEmpty(mimeType) && !string.IsNullOrEmpty(extension) &&
                    !fileTypes.ContainsKey(extension))
                    fileTypes.Add(extension, mimeType);
            }
        }
    }
}

1 个答案:

答案 0 :(得分:2)

那是因为你可以从互联网上的某个地方复制和粘贴mime类型,并且得到了错误的连字符。

您的连字符是非中断连字符(Unicode 0x2011)。你想要一个常规连字符(Unicode 0x2d)。只需手动替换代码中的所有连字符,或者只复制它:

{{1}}

复制代码/文本/等时要小心。来自网络。这个问题通常也会出现在引号中,因为大多数CMS都不会占用程序员和#39;需要,只需更换一些字符,使它们看起来更好&#34;或者避免格式化问题。