C# StreamReader Encoding.UTF8 不工作

标签 c# unicode streamreader

我在 Visual Studio 中有一个 C# 项目,它下载并解析包含韩文、中文和其他 unicode 字符的 XML 文件。例如,对于名为 Taeyang 的韩国艺术家,它会生成如下 XML:

<name>태양</name>

但它返回

<name>??</name>

我试过 StreamReader Encoding.Default 但结果是

<name>태양</name>

代码:

string address = String.Format("http://musicbrainz.org/ws/2/artist/{0}?inc=url-rels", mbids[ord]);
HttpWebRequest newRequest = WebRequest.Create(address) as HttpWebRequest;
               newRequest.Headers["If-None-Match"] = etagProf;
               newRequest.Headers[HttpRequestHeader.AcceptEncoding] = "gzip";
var response = newRequest.GetResponse();
// Reader
Stream stream = response.GetResponseStream();
StreamReader reader = new StreamReader(stream, Encoding.UTF-8);
string data = reader.ReadToEnd();

和 xml 源:

<?xml version="1.0" encoding="UTF-8"?>
<metadata xmlns="http://musicbrainz.org/ns/mmd-2.0#">
    <artist type="Person" id="d84e5667-3cbe-4556-b551-9d7e4be95d71">   
        <name>태양</name>
        <sort-name>Taeyang</sort-name><gender>Male</gender>
        <country>KR</country>
        ...........
    </artist>
</metadata>

我很困惑,为什么会这样?伙计,有什么想法吗?

最佳答案

使用下面的代码(注意我注释掉了你的两行)

//newRequest.Headers["If-None-Match"] = "d84e5667-3cbe-4556-b551-9d7e4be95d71";
//newRequest.Headers[HttpRequestHeader.AcceptEncoding] = "gzip";

并更改了你的行:StreamReader(stream, Encoding.UTF-8);

到:StreamReader(stream, Encoding.UTF8);

我在角色方面取得了不错的成绩: enter image description here

string address = String.Format("http://musicbrainz.org/ws/2/artist/{0}?inc=url-rels","d84e5667-3cbe-4556-b551-9d7e4be95d71");
HttpWebRequest newRequest = WebRequest.Create(address) as HttpWebRequest;
//newRequest.Headers["If-None-Match"] = "d84e5667-3cbe-4556-b551-9d7e4be95d71";
//newRequest.Headers[HttpRequestHeader.AcceptEncoding] = "gzip";
var response = newRequest.GetResponse();
// Reader
Stream stream = response.GetResponseStream();
StreamReader reader = new StreamReader(stream, Encoding.UTF8);
string data = reader.ReadToEnd();
MessageBox.Show(data);

关于C# StreamReader Encoding.UTF8 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28624049/

相关文章:

unicode - 天城文中的连接字母是如何呈现的?

c - glibc 从哪里获得它的 unicode 属性数据库?

c# - 从文本文件中删除第一行并将其余单词放入与空格分隔的数组中,

c# - GetHashCode() 在不同的服务器上给出不同的结果?

c# - .Net Core API 无法使用 MSI 从 Azure CLI 获取 token

c# - 在 Moq 中为返回 void 的方法分配参数

java - 如何在 Java 中检测适当的字符串区域设置

c# - 有没有更好的方法将多个 header 从输入文件映射到类模型?

vb.net - 流式编辑 OpenXml powerpoint 演示幻灯片

c# - 有效地读取 c# 中的 .csv 文件?