Как исправить в строке специальные символы тюрки sh? - PullRequest
2 голосов
/ 13 июля 2020

У меня есть строка, извлеченная из URL-адреса в качестве имени файла, которая содержит специальные турецкие sh символы (çğıİöüş), и они кажутся неправильными. Как это исправить?

public static string getFileName(HttpWebResponse response, string url)
{
    var cd = response.Headers["content-disposition"];
    var loc = response.Headers["location"];

    if (!string.IsNullOrEmpty(cd))
    {
        var disp = ContentDispositionHeaderValue.Parse(cd);
        return Uri.UnescapeDataString(disp.FileName);
    }
    else if (!string.IsNullOrEmpty(loc))
        return Path.GetFileName(loc);
    else
        return Path.GetFileName(url);
}

Исходная строка:

y2mate.com - Cengiz Özkan - Suzan Suzi (Kırklar Dağının Düzü)_VaW6Mhde9Ko.mp3

Правильная строка:

y2mate.com - Cengiz Özkan - Suzan Suzi (Kırklar Dağının Düzü)_VaW6Mhde9Ko.mp3

1 Ответ

3 голосов
/ 13 июля 2020

Похоже, у вас смешанные Win-1254 и Utf-8 кодировки:

string original =
  @"y2mate.com - Cengiz Özkan - Suzan Suzi (Kırklar Dağının Düzü)_VaW6Mhde9Ko.mp3";

string correct = Encoding.UTF8.GetString(Encoding.GetEncoding(1254).GetBytes(original));

// Let's have a look
Console.Write(correct);

Результат:

y2mate.com - Cengiz Özkan - Suzan Suzi (Kırklar Dağının Düzü)_VaW6Mhde9Ko.mp3
...