[.net] WebClient.DownloadString으로 인해 인코딩 문제로 인해 문자가 왜곡되지만 브라우저는 정상입니다.

다음 코드 :

var text = (new WebClient()).DownloadString("http://export.arxiv.org/api/query?search_query=au:Freidel_L*&start=0&max_results=20"));

text다른 많은 것들 중에서 문자열을 포함 하는 변수 가됩니다.

“$ κ $ -Minkowski 공간, 스칼라 필드 및 Lorentz 불변의 문제”

그러나 Firefox에서 해당 URL을 방문하면

$ κ $ -Minkowski 공간, 스칼라 필드, 로렌츠 불변 문제

실제로 맞습니다. 나는 또한 시도했다

var data = (new WebClient()).DownloadData("http://export.arxiv.org/api/query?search_query=au:Freidel_L*&start=0&max_results=20");
var text = System.Text.UTF8Encoding.Default.GetString(data);

그러나 이것은 같은 문제를 주었다.

여기에 결함이 어디에 있는지 잘 모르겠습니다. 피드가 UTF8 인코딩에 대해 거짓말을하고 있고 브라우저는 그것을 알아낼만큼 똑똑하지만 그렇지 WebClient않습니까? 피드가 올바르게 UTF8로 인코딩되었지만 WebClient다른 방식으로 실패합니까? 이 문제를 완화하려면 어떻게해야합니까?



답변

거짓말이 아닙니다. DownloadString을 호출하기 전에 먼저 웹 클라이언트의 인코딩을 설정해야합니다.

using(WebClient webClient = new WebClient())
{
webClient.Encoding = Encoding.UTF8;
string s = webClient.DownloadString("http://export.arxiv.org/api/query?search_query=au:Freidel_L*&start=0&max_results=20");
}

대안이 작동하지 않는 이유는 사용법이 잘못 되었기 때문입니다. 다음과 같아야합니다.

System.Text.Encoding.UTF8.GetString()


답변