一尘不染

使用C#进行URL编码

c#

我有一个应用程序,该应用程序将POST请求发送到VB论坛软件并登录某人(不设置cookie或任何东西)。

用户登录后,我将创建一个变量,该变量将在其本地计算机上创建路径。

c:\ tempfolder \ date \用户名

问题在于某些用户名抛出“非法字符”异常。例如,如果我的用户名是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值或任何其他容易识别字符的值。


阅读 1920

收藏
2020-05-19

共1个答案

一尘不染

编辑:请注意,此答案现在已过期。 请参阅下面的Siarhei
Kuchuk答案
以获得更好的解决方案

UrlEncoding将按照您在此处的建议进行操作。HttpUtility如前所述,使用C#,您只需使用。

您还可以将正则表达式换成非法字符,然后进行替换,但这变得更加复杂,因为您将必须具有某种形式的状态机(例如switch …
case)以替换正确的字符。由于UrlEncode这是预先完成的,因此非常容易。

至于Linux和Windows,有一些Linux可以接受的字符,但Windows却没有,但是我不用担心,因为可以使用解码Url字符串来返回文件夹名称UrlDecode,因此您可以往返变化。

2020-05-19