# [VB.NET] FtpWebRequest處理檔案名稱特殊符號 ###### 發布日期:2020-09-14 | 存檔日期:2023-06-18 ###### 原文網址:https://dotblogs.com.tw/terry_324/2020/09/14/152957 FTP檔名包含特殊符號「#」,造成`FtpWebRequest`出現Exception,顯示的是FTP 550檔案不存在或沒有權限,特殊符號處理過後即正常。 使用`Uri.HexEscape()`,將「#」轉換為十六進制表示的ASCII碼,才是可辨別的uri。`Uri.HexEscape(CChar("#"))`會被轉換成`%23`。 其他會造成錯誤的特殊符號可能還有「%」、「+」...。 ```vb= 'Handle speceial character in ftp uri to avoid error Private Function uri_HandleSpecialChar(ByVal str_FtpAddress As String) As Uri If str_FtpAddress.Contains("#") Then str_FtpAddress = str_FtpAddress.Replace("#", Uri.HexEscape(CChar("#"))) End If If str_FtpAddress.Contains("%") Then str_FtpAddress = str_FtpAddress.Replace("%", Uri.HexEscape(CChar("%"))) End If If str_FtpAddress.Contains("+") Then str_FtpAddress = str_FtpAddress.Replace("+", Uri.HexEscape(CChar("+"))) End If Return New Uri(str_FtpAddress) End Function ``` ## 參考資料 * [c# 进行ftp操作时,遇到‘#’特殊字符处理](https://blog.csdn.net/ychxiaoyixiao/article/details/46237875) * [上傳檔案至 IIS 的檔案名稱有三個字元最好禁止使用: % # +](https://blog.miniasp.com/post/2011/07/08/Avoid-some-Bad-Characters-to-Use-in-Web-based-Filenames) ###### tags: `Visual Basic` `dotblogs存檔` `Public`