IRONSOFTWAREHOME
開発者向けアップデート

C# URL Encode(開発者向けの動作方法)

Jacob Mellor、Ironチームの最高技術責任者(CTO)
Jacob Mellor
Updated: 2026年4月23日

URLエンコーディングとデコーディングは、URL内のデータの安全な伝送を保証するためにC#で使用される技術です。 C#では、これらの操作は、Webアプリケーション、APIコール、またはデータを安全かつ確実にインターネット経由で渡す必要があるシナリオを扱うときによく遭遇します。 この記事では、URLエンコーディングの方法とIronPDFライブラリについて説明します。

C#におけるURLエンコーディング

URLをエンコードする場合、その文字をインターネット上で安全に送信できる形式に変更し、誤解を避ける必要があります。 これは、URLがASCII文字セットを使用してインターネットを介してのみ送信することができるためです。 このセットに含まれていない文字や、URLで特別な意味を持つ文字(スペース、アンパサンド、等号など)は、パーセントエンコーディングを使って表現する必要があります(たとえば、スペースは**%20**になります)。 C#は、このタスクを達成するための組み込みメソッドを提供します。

C#でのURLデコード

URLデコードは、目的地に到着したときに、エンコードされた文字を元の状態に変換します。 これは、受信側のアプリケーションがデータを正しく理解し、意図どおりに処理するために不可欠です。 デコードは、パーセントエンコードされた文字を元の記号に戻し、データを読みやすく、再び使えるようにします。

C#におけるエンコーディングメソッド

C#では、URLエンコーディングを行う方法が複数あり、それぞれ異なるシナリオに適しています。 これらのメソッドは主にSystem.WebSystem.Net名前空間内にあり、開発者にURLエンコード方法の柔軟性を提供します。 以下は、利用可能な方法の簡単な概要です:

  1. **HttpUtility.UrlEncode メソッド (System.Web):**これは、Web アプリケーションでの URL エンコードにおそらく最もよく使用される方法です。 文字をパーセントエンコード形式に変換し、文字列をURL上で安全に送信できるようにします。 ASP.NETプロジェクトでは、クエリー文字列やフォームパラメーターのエンコードに特に役立ちます。
  2. HttpUtility.UrlPathEncode メソッド (System.Web): UrlEncodeとは異なり、 UrlPathEncode はクエリ文字列をそのまま残し、URL のパス部分をエンコードするために特別に設計されています。 この方法では、URL全体をエンコードするのではなく、パス部分をエンコードするため、URLの階層構造が保たれることに注意することが重要です。
  3. Uri.EscapeUriString メソッド (システム):このメソッドは、URI 文字列をエスケープし、URI で許可されていないすべての文字をパーセントエンコードされた文字に変換します。 ただし、スラッシュ(/)やクエスチョンマーク(?
  4. **Uri.EscapeDataString メソッド (システム):**このメソッドは、URI のクエリ部分で使用される文字列をエンコードするために設計されています。 これは、RFC 3986 で定義されている unreserved 文字を除くすべての文字をエンコードします。EscapeUriStringよりも積極的で、URL内の送信のためにデータが安全にエンコードされることを保証します。

上記のように、最初の3つのエンコード方法と、そのコード例を理解することによって、その動作を理解しましょう。

HttpUtility.UrlEncodeメソッドのコード例

using System;
using System.Web;

class Program
{
    static void Main()
    {
        string originalPath = "/api/search/Hello World!";
        string encodedPath = UrlEncode(originalPath);
        
        Console.WriteLine("Original Path: " + originalPath);
        Console.WriteLine("Encoded Path: " + encodedPath);
    }

    public static string UrlEncode(string originalString)
    {
        return HttpUtility.UrlEncode(originalString);
    }
}

名前空間の包含: System.Web名前空間がコードの先頭に包含されます。

元の文字列: URL で安全に送信するためにエンコードする文字を含む文字列変数originalStringを定義します。 これには、エンコードせずにURLに含めると問題を引き起こす可能性のあるスペースや句読点が含まれます。

エンコーディング: HttpUtility.UrlEncodeメソッドは、 originalStringを引数として呼び出されます。 このメソッドは文字列を処理し、安全でない文字をパーセントエンコードされた同等の文字に置き換えた新しい文字列を返します。 例えば、スペースは**%20**に置き換えられます。

**出力:**最後に、プログラムは元の文字列とエンコードされた文字列の両方をコンソールに出力します。

C# URLエンコード(開発者向け動作説明): 図1 - 元の文字列とエンコードされた文字列を示すコンソール出力

HttpUtility.UrlPathEncodeメソッドのコード例

using System;
using System.Web;

class Program
{
    static void Main()
    {
        // Define the original URL path, which includes spaces.
        string originalPath = "/api/search/Hello World!";
        
        // Use the HttpUtility.UrlPathEncode method to encode the path.
        string encodedPath = HttpUtility.UrlPathEncode(originalPath);
        
        // Output the original and encoded paths to the console.
        Console.WriteLine("Original Path: " + originalPath);
        Console.WriteLine("Encoded Path: " + encodedPath);
    }
}

**URLエンコードにおける文字エンティティの等価物:**このプロセスは、URLパスの文字列値を変換し、ウェブの互換性のためにスペースを文字エンティティの等価物(%20)に変換します。 URLには実際のスペースを含めることができないため、これは非常に重要です。

文字列値とURL文字列の処理: originalPath変数の文字列値は"/api/search/Hello World!"であり、これはスペースを含んでいるためにエンコードを必要とするURL文字列の典型的な例です。

この例では、メソッドのオーバーロードなしで HttpUtility.UrlPathEncode の特定のバージョンを使用していますが、URL パスをエンコードするためのメソッドの設計意図に注意することが重要です。 開発者は、メソッドのオーバーロードが存在する場合、メソッドを使用する別の方法を提供するため、多くの場合、異なるタイプの入力を受け入れるか、または追加の機能を提供するメソッドのオーバーロードに注意する必要があります。

**エンコーディングオブジェクトと文字列URLの変換:**このコンテキストにおけるエンコーディングオブジェクトは、文字列URLを受け取り、そのエンコードされたフォームを返すHttpUtility.UrlPathEncodeメソッドの操作に暗黙的に含まれています。 この方法では、特殊文字を適切な表現にエンコードしながらも、URLパスの構造が損なわれないようにします。

エンコードされたパスの出力: このプログラムは、元のパスからエンコードされたパスへの変換を示します。 これは、文字列URLをウェブ送信用にエンコードする直接的な例で、スペースやその他の特殊文字が引き起こす可能性のある問題に対処しています。

C# URLエンコード(開発者向け動作説明): 図2 - 元の文字列とエンコードされた文字列を示すコンソール出力

Uri.EscapeUriStringメソッドのコード例

using System;

class Program
{
    static void Main()
    {
        string originalUri = "https://example.com/search?query=Hello World!";
        string escapedUri = Uri.EscapeUriString(originalUri);
        
        Console.WriteLine("Original URI: " + originalUri);
        Console.WriteLine("Escaped URI: " + escapedUri);
    }
}

元の URI: originalUri変数は、スペースと特殊文字を含むクエリ文字列を含む完全な URI を表す文字列で初期化されます。 URIがウェブブラウザやサーバによって正しく処理されるように、これらの特殊文字は"エスケープ"する必要があります。

URI のエスケープ: Uri.EscapeUriStringメソッドが、 originalUriを引数として呼び出されます。 このメソッドは、URI文字列をスキャンし、URIで許可されていない文字や曖昧さを引き起こす可能性のある文字をエスケープします。

**出力:**プログラムは元の URI とエスケープされた URI の両方をコンソールに出力します。

C# URLエンコード(開発者向け動作説明): 図3 - 元の文字列とエンコードされた文字列を示すコンソール出力

IronPDF: C# PDFライブラリ

C# URLエンコード(開発者向け動作説明): 図4 - IronPDFウェブページ

IronPDFは、.NETアプリケーション内でのPDFファイルの作成、編集、操作を簡素化するPDFライブラリです。 C#やVB.NETとシームレスに統合するように設計されたIronPDFは、HTMLからまたはテキストから直接PDFを生成する機能を開発者に提供します。 請求書作成の自動化、ダイナミックレポートの作成、.NET環境でのドキュメント管理など、IronPDFはその使いやすさと包括的な機能で際立っています。

IronPDFのハイライトはHTMLからPDFへの変換機能で、レイアウトとスタイルを維持します。 これにより、ウェブコンテンツからPDFを作成することができ、レポート、請求書、ドキュメンテーションに最適です。 HTMLファイル、URL、HTML文字列は簡単にPDFに変換できます。

using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}

URLエンコードによる動作コード例

次の例では、ウェブページからPDFを生成するためにURLエンコーディングと組み合わせてIronPDFを使用する方法を説明します。 このシナリオでは、Webリクエスト用に正しくフォーマットされたURLをエンコードし、IronPDFを使ってそのURLのコンテンツをPDFドキュメントに変換します。

IronPDFライブラリをインストールする

まず、プロジェクトにIronPDFがインストールされていることを確認してください。 NuGetパッケージマネージャを使用している場合は、実行することでインストールできます:

PM > Install-Package IronPdf

コード例

それでは、コードに飛び込んでみましょう:

using System.Web;
using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        License.LicenseKey = "License-Key"; // Set your IronPDF license key
        string baseUrl = "https://example.com/search";
        
        // The query parameter with spaces that needs to be encoded
        string query = "Hello World!";
        
        // Encoding the query parameter to ensure the URL is correctly formatted
        string encodedQuery = HttpUtility.UrlEncode(query);
        
        // Constructing the full URL with the encoded query parameter
        string fullUrl = $"{baseUrl}?query={encodedQuery}";
        
        // Initialize the IronPDF HtmlToPdf renderer
        var renderer = new ChromePdfRenderer();
        
        // Convert the web page at the encoded URL to a PDF document
        var pdf = renderer.RenderUrlAsPdf(fullUrl);
        
        // Save the PDF to a file
        string filePath = "webpage.pdf";
        pdf.SaveAs(filePath);
        
        Console.WriteLine($"PDF successfully created from: {fullUrl}");
        Console.WriteLine($"Saved to: {filePath}");
    }
}

C# URLエンコード(開発者向け動作説明): 図5 - URLをPDFに変換した成功を示すコンソール出力

コードの説明

この例は、ベースURLとスペースを含むクエリー文字列から始まります。 クエリ文字列は、HttpUtility.UrlEncodeを使用してエンコードされ、URLで安全に送信されます。 クエリをエンコードした後、ベースURLに追加して、アクセスされる完全なURLを形成します。

エンコードされたURLの準備ができたら、IronPDFのChromePdfRendererを使ってURLのウェブページを取得し、PDFドキュメントに変換します。 これは、ChromePdfRendererクラスのインスタンスを作成し、エンコードされたURLでRenderUrlAsPdfを呼び出すことを含みます。 最後に、生成されたPDFはSaveAsメソッドを使用してファイルに保存されます。 出来上がったファイルは、エンコードされたURLからアクセスできる、ウェブページコンテンツのPDFドキュメントです。 こちらが出力されたPDFファイルです:

C# URLエンコード(開発者向け動作説明): 図6 - URLから出力されたPDF

結論

最後に、C#はURLエンコードとデコードのための強力な機能を提供し、データをインターネット上で安全かつ効率的に送信できるようにします。 System.WebおよびSystem.Net名前空間内の組み込みメソッドを通じて、開発者は特殊文字の問題を防ぐためにURLをエンコードし、正確なデータ解釈のために元の形式にデコードすることができます。

IronPDFトライアルライセンスを検討されている方には、その機能を直接評価する機会を提供します。 IronPDFをプロジェクトに統合することを決定した場合、$999からライセンスが始まり、.NETフレームワーク内でのPDF操作ニーズを満たすための包括的な機能スイートを提供します。

Jacob Mellor、Ironチームの最高技術責任者(CTO)
最高技術責任者(CTO)

ジェイコブ・メラーはIron Softwareの最高技術責任者(CTO)であり、C# PDFテクノロジーを開拓する先見的なエンジニアです。Iron Softwareのコアコードベースを支えるオリジナル開発者として、彼は創業以来、会社の製品アーキテクチャを形成し、CEOのCameron Rimingtonとともに、会社をNASA、Tesla、および世界的な政府機関にサービスを提供する50人以上の会社に変えました。1999年にロンドンで最初のソフトウェアビジネスを開業し、2005年に最初 for .NETコンポーネントを作成した後、Microsoftのエコシステム全体で複雑な問題を解決することを専門としました。

関連する記事

Key in blue circle

無料の30日間トライアルキーをすぐに入手してください。

Your trial license will be sent to your email address

制限なし。100% ロック解除済み。クレジットカード不要。

bullet_checkedクレジットカードやアカウントの作成は不要です。制限なし。100% ロック解除済み。クレジットカード不要。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
無料のライブデモを予約する
Booking Badge

世界中の数百万人のエンジニアから信頼されています。

ライセンスはより安く
義務のない相談を受ける
下記のフォームを記入するか、sales@ironsoftware.comにメールしてください。
あなたの詳細は常に守秘されます。
世界中の数百万人のエンジニアから信頼されています。
ライセンスはより安く
あなたの無料30日間の試用キーをすぐに入手。
クレジットカードやアカウントの作成は不要です。