Üçüncü taraf bir uygulamadan aldığım bir dizem var ve Windows Yüzeyimde C # kullanarak herhangi bir dilde doğru şekilde görüntülemek istiyorum.
Hatalı kodlama nedeniyle dizemin bir parçası İspanyolcada şöyle görünüyor:
Acción
oysa şöyle görünmelidir:
Acción
Bu sorunun cevabına göre: C # 'da string kodlaması nasıl anlaşılır, aldığım kodlama UTF-8 üzerinde zaten geliyor olmalı, ancak Encoding.Default üzerinde okunuyor (muhtemelen ANSI?).
Bu dizeyi gerçek UTF-8'e dönüştürmeye çalışıyorum, ancak sorunlardan biri, Kodlama sınıfının yalnızca bir alt kümesini görebiliyor olmam (yalnızca UTF8 ve Unicode özellikleri), çünkü muhtemelen Windows yüzey API'siyle sınırlı olmam.
İnternette bulduğum bazı parçacıkları denedim, ancak şimdiye kadar hiçbiri doğu dilleri (yani Korece) için başarılı olamadı. Bir örnek aşağıdaki gibidir:
var utf8 = Encoding.UTF8;
byte[] utfBytes = utf8.GetBytes(myString);
myString= utf8.GetString(utfBytes, 0, utfBytes.Length);
Ayrıca dizeyi bir bayt dizisine çıkarmayı ve ardından UTF8.GetString'i kullanmayı denedim:
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);
Deneyebileceğim başka fikirleriniz var mı?