[解決済み] C#によるURLエンコード
質問
私は、VBフォーラムソフトウェアにPOSTリクエストを送信し、(クッキーや何かを設定せずに)誰かをログインさせるアプリケーションを持っています。
ユーザーがログインしたら、そのユーザーのローカルマシンにパスを作成する変数を作成します。
c:♪tempfolder ♪date ♪username
問題は、一部のユーザー名が "Illegal chars" 例外をスローすることです。例えば、私のユーザー名が
mas|fenix
という例外が発生します。
Path.Combine( _
Environment.GetFolderPath(System.Environment.SpecialFolder.CommonApplicationData), _
DateTime.Now.ToString("ddMMyyhhmm") + "-" + form1.username)
文字列から削除するわけではないのですが、サーバーにFTPで自分のユーザー名のフォルダが作成されます。そして、これが2つ目の質問につながります。サーバー上にフォルダを作成する場合、"inlegal chars"を入れたままにしておいていいのでしょうか?サーバーはLinuxベースで、Linuxがそれを受け入れるかどうか分からないので、私はこれを尋ねるだけです。
EDIT: URLエンコードは私が欲しいものではなさそうです。以下は、私がやりたいことです。
old username = mas|fenix
new username = mas%xxfenix
ここで、%xxはASCII値、またはその文字を容易に識別できるその他の値です。
どのように解決するのですか?
編集:この回答は現在では古くなっていることに注意してください。参照 Siarhei Kuchukの回答は以下の通りです。 より良い修正方法
UrlEncodingは、あなたがここで提案していることを実行します。C# では、単に
HttpUtility
は、前述のとおりです。
不正な文字を Regex してから置換することもできますが、正しい文字に置換するために何らかのステートマシン (switch ... case など) が必要になるため、はるかに複雑になります。というのも
UrlEncode
はこれを前面に押し出すので、むしろ簡単です。
LinuxとWindowsの違いについては、Linuxで使えてWindowsで使えない文字がありますが、Url文字列をデコードしてフォルダ名を返すことができるので、気にすることはないでしょう。
UrlDecode
ということで、変更点は丸投げでOKです。
関連
-
[解決済み] JavaScriptでURLをエンコードする?
-
[解決済み] C#で文字列のエンコーディングを手動で指定せずに、一貫性のあるバイト表現を得るには?
-
[解決済み] usingディレクティブはネームスペースの内側と外側のどちらを使うべきですか?
-
[解決済み] C#でメソッドをパラメータとして渡す
-
[解決済み] クエリ文字列パラメータのJava URLエンコーディング
-
[解決済み] C#を使用して.NETで現在のユーザー名を取得する方法は?
-
[解決済み] Javascriptオブジェクトのクエリ文字列エンコーディング
-
[解決済み] JavaによるHTTP URLアドレスのエンコード
-
[解決済み] AndroidにおけるURLエンコーディング
-
[解決済み】Swift - URLをエンコードする
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Swashbuckle/Swagger + ASP.Net Core: "Failed to load API definition" (API定義の読み込みに失敗しました
-
[解決済み】Moqを使用してメソッド呼び出しを検証する
-
[解決済み】URLから画像をダウンロードする方法
-
[解決済み】インデックスが範囲外でした。コレクションパラメータname:indexのサイズより小さく、非負でなければなりません。
-
[解決済み】パラメータ付きRedirectToAction
-
[解決済み】「namespace」なのに「type」のように使われる。
-
[解決済み】名前 'ViewBag' が現在のコンテキストに存在しない - Visual Studio 2015
-
[解決済み] プロキシサーバーで Git を動かす - "Request timed out" で失敗する
-
[解決済み】System.Webを使用せずにUrlEncodeする方法は?
-
[解決済み】EscapeUriStringとEscapeDataStringの違いは何ですか?