c# - 无法解析unicode字符

标签 c# filestream xmlreader

我正在尝试使用 xml reader 读取 xml 文件。我创建了一个字典来存储 mime 类型及其相应的扩展名。我已经以这种格式存储了 mime 类型。 <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);
            }
        }
    }
}

最佳答案

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

你的连字符是一个不间断连字符 (Unicode 0x2011)。您需要一个常规连字符 (Unicode 0x2d)。只需手动替换代码中的所有连字符或复制以下内容:

"image/x-portable-bitmap"

复制代码/文本/等时请务必小心。来自网络。引号也经常出现此问题,因为大多数 CMS 不考虑程序员的需求,只是替换一些字符以使它们“看起来更好”或避免格式问题。

关于c# - 无法解析unicode字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37317887/

相关文章:

c# - 为什么lambdas可以将函数调用转化为Actions?

c# - FileStream.Read - 不使用循环读取流

c# - 匿名 StreamReader 会自动关闭吗?

iphone - 用于 Objective C iPhone 的 XMLStreamReader?

php - 使用带有 php XML 函数的 CURL 输出来处理大数据提要

c# - WCF - 发送请求的能力,其中字段可以按任何顺序排列

c# - 图片不在 Chrome 和 FF 上显示

c# - sql server 中的文件流和用于 aspx 的 C#

java - 使用java读取xml文件来访问每个元素

c# - 跨平台使用的DLL项目应该是什么类型