C#에서 UTF-8에서 ISO-8859-1 문자열 변환을 올바르게 처리
UTF-8 문자열을 ISO-8859-1(Latin-1)로 직접 변환하면 데이터 손실 및 문자 손상이 발생하는 경우가 많습니다. 이는 UTF-8이 가변 길이 인코딩을 사용하는 반면 ISO-8859-1은 고정 길이, 단일 바이트 인코딩을 사용하기 때문입니다. 적절한 바이트 변환 없이 단순히 인코딩을 변경하면 잘못된 출력이 발생합니다.
정확한 변환의 핵심은 Encoding.Convert
방식을 사용하는 데 있습니다. 이 방법은 UTF-8 바이트를 ISO-8859-1에 해당하는 바이트로 적절하게 매핑하여 필요한 변환을 처리합니다. ISO-8859-1에 없는 문자는 가장 가까운 문자로 대체되거나 손실될 수 있습니다.
수정된 C# 코드는 다음과 같습니다.
<code class="language-csharp">Encoding iso = Encoding.GetEncoding("ISO-8859-1"); Encoding utf8 = Encoding.UTF8; string utf8String = "ÄäÖöÕõÜü"; // Example UTF-8 string byte[] utf8Bytes = utf8.GetBytes(utf8String); byte[] isoBytes = Encoding.Convert(utf8, iso, utf8Bytes); string iso88591String = iso.GetString(isoBytes);</code>
이 코드는 먼저 원본 문자열에서 UTF-8 바이트를 가져옵니다. 그런 다음 Encoding.Convert
은 이러한 바이트를 ISO-8859-1에 적합한 표현으로 변환합니다. 마지막으로 결과 바이트 배열은 ISO-8859-1 인코딩을 사용하여 디코딩되어 최종 문자열을 생성합니다. 이 과정에서 ISO-8859-1 문자 세트 이외의 모든 문자가 손실되거나 대체될 수 있다는 점을 기억하세요.
위 내용은 C#에서 UTF-8 문자열을 ISO-8859-1로 올바르게 변환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!