Tôi có một chuỗi mà tôi nhận được từ ứng dụng của bên thứ ba và tôi muốn hiển thị chính xác chuỗi đó bằng bất kỳ ngôn ngữ nào sử dụng C # trên Windows Surface của tôi.
Do mã hóa không chính xác, một đoạn trong chuỗi của tôi trông như thế này bằng tiếng Tây Ban Nha:
Chính phủ
trong khi nó sẽ trông như thế này:
Acción
Theo câu trả lời cho câu hỏi này: Làm thế nào để biết mã hóa chuỗi trong C # , mã hóa tôi đang nhận phải có trên UTF-8, nhưng nó được đọc trên Encoding.Default (có lẽ là ANSI?).
Tôi đang cố gắng chuyển đổi chuỗi này thành UTF-8 thực sự, nhưng một trong những vấn đề là tôi chỉ có thể thấy một tập hợp con của lớp Mã hóa (chỉ thuộc tính UTF8 và Unicode), có lẽ vì tôi bị giới hạn trong API bề mặt của windows.
Tôi đã thử một số đoạn mà tôi tìm thấy trên internet, nhưng không ai trong số họ đã chứng minh thành công cho đến nay đối với các ngôn ngữ phương Đông (tức là tiếng Hàn). Một ví dụ như sau:
var utf8 = Encoding.UTF8;
byte[] utfBytes = utf8.GetBytes(myString);
myString= utf8.GetString(utfBytes, 0, utfBytes.Length);
Tôi cũng đã thử trích xuất chuỗi thành một mảng byte và sau đó sử dụng 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);
Các bạn có ý tưởng nào khác mà tôi có thể thử không?
Encoding.Default
trả về bảng mã ANSI của hệ thống.