>백엔드 개발 >C++ >C#에서 UTF-8을 ISO-8859-1로 올바르게 변환하는 방법은 무엇입니까?

C#에서 UTF-8을 ISO-8859-1로 올바르게 변환하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2025-01-08 14:11:46319검색

How to Correctly Convert UTF-8 to ISO-8859-1 in C#?

C#에서 UTF-8을 ISO-8859-1로 변환하는 문제 해결

UTF-8 문자열을 ISO-8859-1로 변환할 때 올바르게 처리하지 않으면 결과 오류가 발생할 수 있습니다. 문제를 분석하고 해결책을 제시해 보겠습니다.

코드 및 질문

제공하신 코드 조각은 Encoding.GetStringEncoding.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.GetBytesUTF-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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.