C#에서 UTF-8을 ISO-8859-1로 변환하는 문제 해결
UTF-8 문자열을 ISO-8859-1로 변환할 때 올바르게 처리하지 않으면 결과 오류가 발생할 수 있습니다. 문제를 분석하고 해결책을 제시해 보겠습니다.
코드 및 질문
제공하신 코드 조각은 Encoding.GetString
및 Encoding.GetBytes
을 사용하여 UTF-8을 ISO-8859-1로 변환하려고 시도합니다. 그러나 이 특정 변환에는 추가 단계가 필요합니다.
해결책: Encoding.Convert 사용
대상 인코딩으로 디코딩하기 전에 바이트 배열을 적절하게 조정하려면 Encoding.Convert
을 사용해야 합니다. 수정된 코드는 다음과 같습니다.
<code class="language-csharp">Encoding iso = Encoding.GetEncoding("ISO-8859-1"); Encoding utf8 = Encoding.UTF8; byte[] utfBytes = utf8.GetBytes(Message); byte[] isoBytes = Encoding.Convert(utf8, iso, utfBytes); string msg = iso.GetString(isoBytes);</code>
설명
Encoding.GetEncoding
특정 문자 인코딩에 대한 인코더 및 디코더를 검색합니다. Encoding.GetBytes
UTF-8 소스 문자열을 바이트 배열로 인코딩합니다. 그러나 Encoding.GetString
을 사용하여 이 바이트 배열을 직접 디코딩하면 원하는 ISO-8859-1 문자열이 생성되지 않습니다.
Encoding.Convert
대상 인코딩에 맞게 바이트 배열을 조정합니다. 이 경우 ISO-8859-1 인코딩과 일치하도록 바이트를 변환합니다. 그런 다음 조정된 바이트 배열을 올바른 ISO-8859-1 문자열로 디코딩할 수 있습니다. Encoding.GetString
결과
이 수정 사항을 적용하면 결과 문자열이 ISO-8859-1로 올바르게 변환되고 왜곡되지 않습니다.위 내용은 C#에서 UTF-8을 ISO-8859-1로 올바르게 변환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!