我有file://鏈接到非UTF-8中的UrlEncoded的非英文字符。要使這些鏈接在瀏覽器中工作,我必須對它們進行重新編碼。從UTF-8編碼爲URL重新編碼爲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。但是...當你使用file:// URL時,瀏覽器就是服務器,所以這取決於瀏覽器......如果你打算在非西方平臺(非ISO-8859-1)中使用它,請檢查它。 .. – helios 2009-12-29 11:30:20