반응형
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 공간, 스칼라 필드 및 Lorentz 불변의 문제
실제로 맞습니다. 나는 또한 시도했다
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()
반응형
'Program Tip' 카테고리의 다른 글
logcat에서 긴 메시지를 표시하는 방법 (0) | 2020.10.04 |
---|---|
FirstOrDefault를 어떻게 확인할 수 있습니까? (0) | 2020.10.04 |
중첩 된 함수 내의 자바 스크립트 "this"포인터 (0) | 2020.10.04 |
Pandas DataFrame 객체에서 인덱스 재정의 (0) | 2020.10.04 |
인덱스 배열의 범위를 벗어난 것입니다. (0) | 2020.10.04 |