2011-09-26 1 views
1

이 코드를 사용하고 있습니다 : result에서의 HttpWebRequest를 유니 코드 문자

HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url); 
string result = null; 
using (HttpWebResponse resp = (HttpWebResponse)req.GetResponse()) 
{ 
    StreamReader reader = new StreamReader(resp.GetResponseStream()); 
    result = reader.ReadToEnd(); 
    reader.Close(); 
} 

내가 003cbr /003e003cbr /003e 같은 텍스트를 얻을 수 (나는이 2 라인 대신 중단해야한다고 생각합니다). 나는 Streamreader의 2, 3 매개 변수 버전으로 시도했지만 문자열은 동일했습니다. (요청이 json 문자열을 반환합니다)

왜 나는 이러한 문자를 얻고 어떻게 피할 수 있습니까?

답변

3

텍스트가 무엇인지는 분명하지 않지만 현재 인코딩을 지정하지 않았습니다. 서버가 사용하는 컨텐츠 인코딩은 무엇입니까? StreamReader은 기본적으로 UTF-8이됩니다.

U + 003C는 <이며, U + 003E는 내용으로 <br /><br />을 제공 >입니다 당신이, 이상한 인코딩 된 HTML의 일종을 받고있어 실제로처럼 소리. 즉 ...

두 시험 JSON 아니다 : 브라우저에서 동일한 URL을 사용하여 표시됩니다 어떤

  • 참조 사용할 수있는 권리 인코딩을 감지 사용 WebClient.DownloadString,

    편집 : 좋아, 이제 본 텍스트, 그것은 실제로있어 :

    \u003cbr /\u003e 
    

    여기서는 \u 부분이 중요합니다. 이는 JSON의 일부로 다음 네 문자가 UTF-16 코드 단위의 16 진수 표현을 나타냅니다.

    해당 텍스트를 구문 분석하는 데 사용되는 모든 JSON API는 이스케이프 처리를 수행해야합니다.

  • +0

    '... { "내용": "일부 텍스트

    "} ...'. 이것은 JSON입니다. 그리고 나는 모든 인코딩으로 Streamreader를 시도했다. –

    +0

    @ e-MEE : 아, 그 텍스트는 있지만 다른 텍스트도 있습니다. 그것은 명확하지 않았다. "003cbr /"을보고 있다고 말하면 어떻게 감지합니까? '결과'는 무엇을보고 있니? –

    +0

    글쎄, 실제로이 요청은 Google+ API activities.list 요청입니다. 그리고 활동 내용에는 "003cbr /" –