我有一个应用程序,该应用程序将POST请求发送到VB论坛软件并登录某人(不设置cookie或任何东西)。
用户登录后,我将创建一个变量,该变量将在其本地计算机上创建路径。
c:\ tempfolder \ date \用户名
问题在于某些用户名抛出“非法字符”异常。例如,如果我的用户名是mas|fenix,它将引发异常。
mas|fenix
Path.Combine( _ Environment.GetFolderPath(System.Environment.SpecialFolder.CommonApplicationData), _ DateTime.Now.ToString("ddMMyyhhmm") + "-" + form1.username)
我不想从字符串中删除它,但是通过服务器上的FTP创建了一个带有用户名的文件夹。这引出了我的第二个问题。如果我在服务器上创建文件夹,可以保留“非法字符”吗?我之所以只问这是因为服务器是基于Linux的,所以我不确定Linux是否接受它。
编辑:似乎URL编码不是我想要的。这是我想做的:
old username = mas|fenix new username = mas%xxfenix
其中%xx是ASCII值或任何其他容易识别字符的值。
编辑:请注意,此答案现在已过期。 请参阅下面的Siarhei Kuchuk答案以获得更好的解决方案
UrlEncoding将按照您在此处的建议进行操作。HttpUtility如前所述,使用C#,您只需使用。
HttpUtility
您还可以将正则表达式换成非法字符,然后进行替换,但这变得更加复杂,因为您将必须具有某种形式的状态机(例如switch … case)以替换正确的字符。由于UrlEncode这是预先完成的,因此非常容易。
UrlEncode
至于Linux和Windows,有一些Linux可以接受的字符,但Windows却没有,但是我不用担心,因为可以使用解码Url字符串来返回文件夹名称UrlDecode,因此您可以往返变化。
UrlDecode