문제

REST Web Service에서 XML 파일을 읽고 구문 분석하고 UitableView에 세부 사항을 표시하고 있습니다. XML 파일은 ISO-8859-1로 인코딩되어 있으며 악센트가있는 문자가 포함되어 있습니다. 문자열을 TableView에 추가하면 정크 문자가 표시되므로 UTF8로 변환하려고 시도했지만 물음표로 변환되어 캐릭터를 이해하지 못한다는 것을 암시합니다.

코드는 다음과 같습니다.

foreach(XmlNode myNode in myNodeList)
{
    Encoding isoEnc = Encoding.GetEncoding ("iso-8859-1");

    string utfResult = Encoding.UTF8.GetString (isoEnc.GetBytes(myNode.InnerText));

    _myCollection.Add(utfResult);
}

여기서 무슨 일이 일어나고 있는지, 악센트가있는 숯을 표시하는 방법이 있습니까?

도움이 되었습니까?

해결책

좋아, 이제 문제가 해결되었습니다. 내 오류는 StreamReader가 기본적으로 ISO-8859-1 인코딩을 처리 할 것이라고 가정 한 것 같습니다. StreamReader 생성자를 다음에서 변경했습니다.

StreamReader reader = new StreamReader (response.GetResponseStream ());

에게:

StreamReader reader = new StreamReader (response.GetResponseStream (), Encoding.GetEncoding("iso-8859-1"));

StreamReader에게 올바른 인코딩을 기대하도록 지시하면 다른 모든 것이 제자리에 떨어집니다.

다른 팁

글쎄, 당신의 "전환"UTF-8으로의 의심은 매우 의심 스럽다. 당신은 기본적으로 XML 파일보다 더 잘 알고 있다고 말하고 있습니다. 주장 ISO-8859-1이 되려면, 당신 진짜 UTF-8에서 인코딩되었다는 것을 알고 있습니다. 그것을 믿을만한 이유가 있습니까?

캐릭터가 무엇인지 아는 경우 해당 문자의 유니 코드 값 (정수)을 나타내는 로깅을 추가하고와 비교하는 것이 좋습니다. unicode.org의 코드 차트. 그러면 문제가 있는지 알 수 있습니다 표시 캐릭터, 또는 처음부터 피드에서 읽습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top