Tôi đã tìm kiếm trên Google về chủ đề này và tôi đã xem xét mọi câu trả lời, nhưng tôi vẫn không hiểu.
Về cơ bản, tôi cần chuyển đổi chuỗi UTF-8 thành ISO-8859-1 và tôi làm điều đó bằng cách sử dụng mã sau:
Encoding iso = Encoding.GetEncoding("ISO-8859-1");
Encoding utf8 = Encoding.UTF8;
string msg = iso.GetString(utf8.GetBytes(Message));
Chuỗi nguồn của tôi là
Message = "ÄäÖöÕõÜü"
Nhưng tiếc là chuỗi kết quả của tôi trở thành
msg = "�ä�ö�õ�ü
Tôi đang làm gì sai ở đây?
Encoding.Unicode
và trong API Win32 Unicode là một bộ ký tự, không phải là một mã hóa UTF-16 là một trong những mã hóa cho Unicode...)
Message
được giải mã từ UTF-8. Giả sử phần đó hoạt động chính xác, việc chuyển đổi sang Latin-1 cũng đơn giản như vậy byte[] bytes = Encoding.GetEncoding("ISO-8859-1").GetBytes(Message)
. Sau đó, giống như StuS nói, bạn có thể chuyển đổi các byte Latin-1 sao sang UTF-16 vớiEncoding.GetEncoding("ISO-8859-1").GetString(bytes)