2011-03-30 5 views
0

일부 JSON 데이터를 검색하고이를 Newtonsoft JSON을 사용하여 역 직렬화하는 C# 프로그램이 있습니다. 내 프로그램에서 페르시아어 문자를 사용하므로 JSON 코드는 다음과 같이 표시됩니다. \ u060c \ u067e \ u0644 \ u0627 \ u06a9 .... 또한 프로그램에서 JSON 데이터를 검색 한 후에도이 문자는 여전히 코딩 된 샘플처럼 표시됩니다 하지만 난 deserialize 후 그것을 ???? chars.C# UTF8 인코딩

어떻게해야합니까?

답변

1

JSON 디시리얼라이저가 손상되었습니다. \ uXXXX는 적절한 문자로 바뀌 었습니다.

는 자신이이 기능을

// Turns every occurrence of \uXXXX into a proper character 
void UnencodeJSONUnicode(string str) { 
    return Regex.Replace(str, 
         @"\\u(?<value>[0-9a-f]{4})", 
         match => { 
          string digits = match.Groups["value"].Value; 
          int number = int.Parse(digits, NumberStyles.HexNumber); 
          return char.ConvertFromUtf32(number); 
         }); 
} 

사용하는 것이 수행 (테스트되지 않은 코드를, 나는 순간 VS 사용할 수없는 일부 예외 처리는 아마 좋은 너무 될 것입니다.)

+0

그것은 작동합니다! 감사! – ShirazITCo

+0

@Shiraz : 변경해야합니까? 그렇다면 나는 그것들을 답안에 포함시킬 수있다. – configurator

-1

인코딩 된 JSON처럼 보이므로 디코딩해야합니다. DataContractJsonSerializer 클래스에서이 작업을 수행 할 수 있습니다.

자세한 내용은 MSDN 링크를 참조하십시오.

+1

'\ uXXXX' HTML 인코딩이 아닙니다. 그것은 JSON 문자열 인코딩입니다. HTML 인코딩은 '&#XXXX;'처럼 보입니다. – Aaron

+0

@Aaron thanks, 내 잘못 업데이트 된 답변 : –

관련 문제