Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何修复字符串中的特殊土耳其字符?_C#_Encoding_Special Characters - Fatal编程技术网

C# 如何修复字符串中的特殊土耳其字符?

C# 如何修复字符串中的特殊土耳其字符?,c#,encoding,special-characters,C#,Encoding,Special Characters,我从url中提取了一个字符串作为文件名,其中包含特殊的土耳其字符(āıİöüş),它们似乎是错误的。我怎样才能修好它 public static string getFileName(HttpWebResponse response, string url) { var cd = response.Headers["content-disposition"]; var loc = response.Headers["location"];

我从url中提取了一个字符串作为文件名,其中包含特殊的土耳其字符(āıİöüş),它们似乎是错误的。我怎样才能修好它

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
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
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
您似乎混合了Win-1254Utf-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
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

你是怎么收到这个字符串的?Net字符串本身可以毫无问题地处理这些特殊字符。根本原因在于您检索/接收此字符串值的方式,您必须添加这部分代码的一部分。@Filburt,我已更新了添加详细信息,发现在这种情况下,如果:@Olivier Rogier:我们有一种土耳其语的特殊编码-它是
Win-1254
,所以我从它开始<代码>Ã=>Ö,
ı=>ü
模式(注意
Ä
每个土耳其字符有一个相同的字符)是Utf-8 MISENCODE的典型模式。所以我有一个很好的候选人去尝试