У меня есть файл: // ссылки с неанглийскими символами, которые являются UrlEncoded в UTF-8. Чтобы эти ссылки работали в браузере, я должен их перекодировать.Re-encode url from utf-8, закодированный в iso-8859-1, закодированный
file://development/H%C3%A5ndplukket.doc
становится
file://development/H%e5ndplukket.doc
У меня есть следующий код, который работает:
public string ReEncodeUrl(string url)
{
Encoding enc = Encoding.GetEncoding("iso-8859-1");
string[] parts = url.Split('/');
for (int i = 1; i < parts.Length; i++)
{
parts[i] = HttpUtility.UrlDecode(parts[i]); // Decode to string
parts[i] = HttpUtility.UrlEncode(parts[i], enc); // Re-encode to latin1
parts[i] = parts[i].Replace('+', ' '); // Change + to [space]
}
return string.Join("/", parts);
}
Есть уборщик способ сделать это?
Фактически кодировка, используемая в кодировке URI, зависит от сервера. W3C рекомендует использовать UTF-8. Но ... когда вы используете URL-адрес файла: //, браузер является сервером, поэтому он зависит от браузера ... если вы планируете использовать его на незаземленной платформе (не ISO-8859-1), проверьте его. .. – helios