ホーム
おまかせ表示
ログイン
設定
MonoBookについて
免責事項
MonoBook
検索
「
C#でUrlEncodeとUrlDecode
」を編集中
警告:
ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。
ログイン
または
アカウントを作成
すれば、あなたの編集はその利用者名とともに表示されるほか、その他の利点もあります。
スパム攻撃防止用のチェックです。 けっして、ここには、値の入力は
しない
でください!
C#というか[[.NET]]にはUrlEncodeとUrlDecodeの統一的な方法がない。標準的に行う方法は、バージョンごと、プラットフォームごとに方法が異なりすぎて悲惨なことになっている。 こんなもんStringクラスの拡張メソッドでいいだろ。アホか。 <syntaxhighlight lang="csharp"> public static class StringExtensions { public static string UrlEncode(this string str, Encoding enc) { var rt = new StringBuilder(); foreach (byte i in enc.GetBytes(str)) { if (i == 0x20) { rt.Append('+'); } else if ((0x30 <= i && i <= 0x39) || (0x41 <= i && i <= 0x5a) || (0x61 <= i && i <= 0x7a)) { rt.Append((char)i); } else { rt.Append("%" + i.ToString("X2")); } } return rt.ToString(); } public static string UrlDecode(this string str, Encoding enc) { var bytes = new List<byte>(); for (int i = 0; i < str.Length; i++) { char c = str[i]; if (c == '%') { bytes.Add((byte)int.Parse(str[++i].ToString() + str[++i].ToString(), System.Globalization.NumberStyles.HexNumber)); } else if (c == '+') { bytes.Add((byte)0x20); } else { bytes.Add((byte)c); } } return enc.GetString(bytes.ToArray(), 0, bytes.Count); } } </syntaxhighlight> [[category: .NET]]
編集内容の要約:
MonoBookへの投稿はすべて、他の投稿者によって編集、変更、除去される場合があります。 自分が書いたものが他の人に容赦なく編集されるのを望まない場合は、ここに投稿しないでください。
また、投稿するのは、自分で書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください(詳細は
MonoBook:著作権
を参照)。
著作権保護されている作品は、許諾なしに投稿しないでください!
このページを編集するには、下記の確認用の質問に回答してください (
詳細
):
1たす1は?(全角で入力してください)
キャンセル
編集の仕方
(新しいウィンドウで開きます)