【发布时间】:2015-02-20 07:54:54
【问题描述】:
我在 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>
我很困惑,为什么会这样?有什么想法吗?
【问题讨论】:
-
您确定源文件实际上是 UTF8 格式吗?
-
当然,我从响应头检查了它的字符集
-
你能分享一个你的原始输入 xml 文件吗?
-
@netblognet : 刚刚更新了我的问题,请检查一下 :)
标签: c# unicode streamreader