이 주제에 대해 검색해 보았고 모든 답변을 살펴 보았지만 여전히 이해하지 못했습니다.
기본적으로 UTF-8 문자열을 ISO-8859-1로 변환해야하며 다음 코드를 사용하여 수행합니다.
Encoding iso = Encoding.GetEncoding("ISO-8859-1");
Encoding utf8 = Encoding.UTF8;
string msg = iso.GetString(utf8.GetBytes(Message));
내 소스 문자열은
Message = "ÄäÖöÕõÜü"
하지만 불행히도 내 결과 문자열은
msg = "�ä�ö�õ�ü
내가 여기서 뭘 잘못하고 있니?
Encoding.Unicode
Win32 API에 잘못 적용되었습니다 . 유니 코드는 인코딩이 아니라 문자 집합입니다. UTF-16은 유니 코드를위한 여러 인코딩 중 하나입니다.)
Message
UTF-8에서 디코딩 된 것입니다. 해당 부분이 올바르게 작동했다고 가정하면 Latin-1로 변환하는 것은 byte[] bytes = Encoding.GetEncoding("ISO-8859-1").GetBytes(Message)
. 그런 다음 StuS가 말했듯이 Latin-1 바이트를 다시 UTF-16으로 변환 할 수 있습니다.Encoding.GetEncoding("ISO-8859-1").GetString(bytes)