Saya telah mencari di Google tentang topik ini dan saya telah melihat setiap jawaban, tetapi saya masih belum mengerti.
Pada dasarnya saya perlu mengubah string UTF-8 menjadi ISO-8859-1 dan saya melakukannya dengan menggunakan kode berikut:
Encoding iso = Encoding.GetEncoding("ISO-8859-1");
Encoding utf8 = Encoding.UTF8;
string msg = iso.GetString(utf8.GetBytes(Message));
String sumber saya adalah
Message = "ÄäÖöÕõÜü"
Tapi sayangnya string hasil saya menjadi
msg = "�ä�ö�õ�ü
Apa yang saya lakukan salah di sini?
Encoding.Unicode
dan di Win32 API. Unicode adalah himpunan karakter, bukan penyandiaksaraan. UTF-16 adalah salah satu dari beberapa penyandiaksaraan untuk Unicode.)
Message
diterjemahkan dari UTF-8. Dengan asumsi bagian itu bekerja dengan benar, mengonversi ke Latin-1 semudah byte[] bytes = Encoding.GetEncoding("ISO-8859-1").GetBytes(Message)
. Kemudian, seperti yang dikatakan StuS, Anda dapat mengonversi Latin-1 byte kembali ke UTF-16 denganEncoding.GetEncoding("ISO-8859-1").GetString(bytes)