monotouch와 함께 C#에 ISO-8859-1 숯 표시
-
18-09-2019 - |
문제
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의 코드 차트. 그러면 문제가 있는지 알 수 있습니다 표시 캐릭터, 또는 처음부터 피드에서 읽습니다.
제휴하지 않습니다 StackOverflow