C# 如何修复字符串中的特殊土耳其字符?
我从url中提取了一个字符串作为文件名,其中包含特殊的土耳其字符(āıİöüş),它们似乎是错误的。我怎样才能修好它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"];
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-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
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的典型模式。所以我有一个很好的候选人去尝试