# [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`