none
Path.GetFileName 如何抓取中文檔名? RRS feed

  • 問題

  • 這是個FTP下載範例

                    FtpWebRequest downloadRequest = (FtpWebRequest)WebRequest.Create(downloadUrl);

                    downloadRequest.Method = WebRequestMethods.Ftp.DownloadFile; //設定Method下載檔案

                    FtpWebResponse downloadResponse = (FtpWebResponse)downloadRequest.GetResponse();

                    responseStream = downloadResponse.GetResponseStream();//取得FTP伺服器回傳的資料流

                    string fileName = Path.GetFileName(downloadRequest.RequestUri.AbsolutePath);


    以下是程式碼出問題的地方

    string fileName = Path.GetFileName(downloadRequest.RequestUri.AbsolutePath);
                 
    英文可以用~
    但中文的話...Path.GetFileName 出來會亂碼~
    downloadRequest.RequestUri.AbsolutePath <=== 這段出來中文就是亂碼了~
    請問我該如何讓他變回中文呢?


    ps.補一下我現在的做法~

    StreamReader reader;
    reader = new StreamReader(downloadResponse.GetResponseStream(), System.Text.Encoding.Default);
    char[] delimiterChars = { ' ' };
    string[] words = reader.ReadLine().Split(delimiterChars);
    words[words.GetUpperBound(0)]
    目前是可用,但不清楚words[words.GetUpperBound(0)] 是不是每個都能這樣用,目前try是可行,檔名剛好都會被分到最後一個。
    2009年12月22日 上午 06:29

解答

  • hi,
    是不是檔名是有進行編碼過了呢??
    試著進行HttpServerUtilityBase . UrlDecode看看吧。
    My Blog:http://www.dotblogs.com.tw/alonstar
    解決問題之後,別忘了回到論壇把正確回應標示成解答哦!
    2009年12月22日 上午 07:28

所有回覆

  • hi,
    是不是檔名是有進行編碼過了呢??
    試著進行HttpServerUtilityBase . UrlDecode看看吧。
    My Blog:http://www.dotblogs.com.tw/alonstar
    解決問題之後,別忘了回到論壇把正確回應標示成解答哦!
    2009年12月22日 上午 07:28
  • 剛試了一下,確實是星寂大講的原因,看來WebRequest.Create()會直接幫你做編碼
    改成這樣就行了

    System.Web.HttpUtility.UrlDecode(downloadRequest.RequestUri.AbsolutePath)
    2009年12月22日 上午 09:31