ฉันมีสตริงที่ฉันได้รับจากแอพของบุคคลที่สามและฉันต้องการแสดงอย่างถูกต้องในภาษาใด ๆ โดยใช้ C # บน Windows Surface ของฉัน
เนื่องจากการเข้ารหัสที่ไม่ถูกต้องส่วนหนึ่งของสตริงของฉันมีลักษณะเช่นนี้ในภาษาสเปน:
Acción
ในขณะที่ควรมีลักษณะเช่นนี้:
Acción
ตามคำตอบของคำถามนี้: จะรู้ได้อย่างไรว่าการเข้ารหัสสตริงใน C #การเข้ารหัสที่ฉันได้รับควรมาที่ UTF-8 แล้ว แต่มันถูกอ่านใน Encoding.Default (อาจเป็น ANSI)
ฉันกำลังพยายามแปลงสตริงนี้เป็น UTF-8 จริง แต่ปัญหาอย่างหนึ่งคือฉันเห็นเฉพาะเซ็ตย่อยของคลาสการเข้ารหัส (คุณสมบัติ UTF8 และ Unicode เท่านั้น) อาจเป็นเพราะฉัน จำกัด Windows window API เท่านั้น
ฉันลองใช้ตัวอย่างบางส่วนที่ฉันพบบนอินเทอร์เน็ต แต่ก็ไม่มีสิ่งใดที่พิสูจน์แล้วว่าประสบความสำเร็จสำหรับภาษาตะวันออก (เช่นภาษาเกาหลี) ตัวอย่างหนึ่งมีดังนี้:
var utf8 = Encoding.UTF8;
byte[] utfBytes = utf8.GetBytes(myString);
myString= utf8.GetString(utfBytes, 0, utfBytes.Length);
ฉันยังพยายามแยกสตริงลงในอาร์เรย์ไบต์แล้วใช้ UTF8.GetString:
byte[] myByteArray = new byte[myString.Length];
for (int ix = 0; ix < myString.Length; ++ix)
{
char ch = myString[ix];
myByteArray[ix] = (byte) ch;
}
myString = Encoding.UTF8.GetString(myByteArray, 0, myString.Length);
พวกคุณมีแนวคิดอื่น ๆ ที่ฉันสามารถลองได้หรือไม่?
Encoding.Default
จะส่งกลับANEP codepage ของระบบ