System.Net.WebUtility を使用します。( Windows8 のサンプルコードの 『Push and periodic notifications client-side sample』内にある Helper.cs に使用例が少しあります ) 内部コードにあわせて、UTF8 のみ文字列のまま変換できますが、他のキャラクタセットではいったんバイト配列に変換して処理する必要があります。
// Shift_JIS で UrlEncode された文字列 string str_sjis_urlencode = "%93%FA%96%7B%8C%EA%95%5C%8E%A6"; // バイト配列に変換 byte[] sjis_data1 = Encoding.GetEncoding("SHIFT_JIS").GetBytes(str_sjis_urlencode); // バイト配列状態で UrlDecode byte[] sjis_data2 = WebUtility.UrlDecodeToBytes(sjis_data1, 0, sjis_data1.Length); // バイト配列を内部コード表現の文字列に戻す string sjis_data3 = Encoding.GetEncoding("SHIFT_JIS").GetString(sjis_data2, 0, sjis_data2.Length); Debug.WriteLine("Shift_JIS:" + sjis_data3); // Shift_JIS の UrlEncode に変換したい文字列 str_sjis_urlencode = "日本語表示"; // バイト配列に変換 sjis_data1 = Encoding.GetEncoding("SHIFT_JIS").GetBytes(str_sjis_urlencode); // バイト配列状態で UrlEncode sjis_data2 = WebUtility.UrlEncodeToBytes(sjis_data1, 0, sjis_data1.Length); // バイト配列を内部コード表現の文字列に戻す sjis_data3 = Encoding.GetEncoding("SHIFT_JIS").GetString(sjis_data2, 0, sjis_data2.Length); Debug.WriteLine("Shift_JIS:" + sjis_data3); // UTF8 で UrlEncode された文字列 string str_utf8_urlencode = "%E6%97%A5%E6%9C%AC%E8%AA%9E%E8%A1%A8%E7%A4%BA"; string str_urldecode = WebUtility.UrlDecode(str_utf8_urlencode); Debug.WriteLine("UTF8:" + str_urldecode); // UTF8 で UrlEncode したい文字列 str_urldecode = "日本語表示"; str_utf8_urlencode = WebUtility.UrlEncode(str_urldecode); Debug.WriteLine("UTF8:" + str_utf8_urlencode);
以下定義の表示
#region アセンブリ System.Runtime.Extensions.dll, v4.0.0.0 // C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETCore\v4.5\System.Runtime.Extensions.dll #endregion using System; namespace System.Net { // 概要: // Web 要求の処理時に URL をエンコードおよびデコードするためのメソッドを提供します。 public static class WebUtility { // 概要: // HTTP 伝送用に HTML エンコードされている文字列を、デコードされた文字列に変換します。 // // パラメーター: // value: // デコードする文字列。 // // 戻り値: // デコードされた文字列。 public static string HtmlDecode(string value); // // 概要: // 文字列を、HTML エンコードされた文字列に変換します。 // // パラメーター: // value: // エンコードする文字列。 // // 戻り値: // エンコードされた文字列。 public static string HtmlEncode(string value); // public static string UrlDecode(string encodedValue); // public static byte[] UrlDecodeToBytes(byte[] encodedValue, int offset, int count); // public static string UrlEncode(string value); // public static byte[] UrlEncodeToBytes(byte[] value, int offset, int count); } }
|
【Win8 ストアアプリの最新記事】
- C# : HttpClient で Post と Get する汎用 static クラス
- Win8.1 ストアアプリ(JS) : Visual Studio 2013 で Three.js(v65) の WebGLRenderer の動作を確認しました
- WinJS ストア : Three.js を組み込んで、『画像を飛ばす』テンプレート( Bird.js を利用 )
- WinJS ストア : 『背景画像をチェンジする2画面アプリ』のテンプレート
- VS2012ストア(C#) : WebView テンプレート
- VS2012(C#)ストア : ListView Twitter 検索テンプレート
- イラストを背景にして2ページの画面遷移を解りやすくした Windows Store テンプレート
- Twitter API の自分のアプリのトークンを使って投稿するだけの class VS2012_Twitter
- Win8 ストア(C#) / PDF viewer sample (Windows 8.1)
- ストアアプリの TextBox のスクロールバー
- Win8 ストアアプリの、メモリ上にページを残す画面遷移と、前画面のコントロールの参照
- Win8 ストアアプリで、『選択肢を応答するダイアログ』を簡単に使うための MessageBox クラス
- Win8 ストアから Post 投稿
- Win8ストア XAML の AppBarButtonStyle のContent に指定する 16進数 Unicode の取得
- Win8 ストア : HttpClient + XDocument で RSS の取得
- Win8 ストア : リストボックス テンプレート
- Win8 ストア : ファイルアクセス テンプレート
- Win8 ストア : ストアブランク テンプレート
- AppBar テンプレート / Win8 ストアアプリ(C#)
- Windows ストアアプリの AppBar を作成してテストする