我試圖從web服務器加載包含帶西里爾字符參數的請求URL的文件。 但我沒有得到這個工作在C#中,即使我的網址編碼的參數。c#使用帶URL編碼西里爾字符的URL的WebClient問題
當我在IE中打開頁面
http://translate.google.com/translate_tts?tl=ru&q =ЗДРАВСТВУЙТЕ
服務器沒有響應。
使用URL編碼版本如預期
http://translate.google.com/translate_tts?tl=ru&q=%d0%97%d0%94%d0%a0%d0%90%d0%92%d0%a1%d0%a2%d0%92%d0%a3%d0%99%d0%a2%d0%95
服務器響應。
現在我的問題:
我想從C#下載MP3 ...
var url = string.Format("http://translate.google.com/translate_tts?tl=ru&q={0}",
Server.UrlEncode("ЗДРАВСТВУЙТЕ"));
System.Net.WebClient client = new WebClient();
var res = client.DownloadData(url);
這並不使用西里爾字符工作。我總是得到一個零字節答案,就像第一個非編碼請求。 當我發送「正常」字符時,上面的代碼工作正常。
所以......我做錯了什麼。 任何提示?的竅門?解決方案?
感謝
邁克爾
偉大的作品,謝謝。只是爲了讓我明白:爲什麼我需要用戶代理,當我發送西里爾-URL和拉丁URL? – Dark 2011-02-17 04:43:39