フッターコンテンツにスキップ
.NETヘルプ

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

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);
    }
}
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);
    }
}
$vbLabelText   $csharpLabel

名前空間の包含: 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);
    }
}
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);
    }
}
$vbLabelText   $csharpLabel

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);
    }
}
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);
    }
}
$vbLabelText   $csharpLabel

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

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

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

C# URLエンコード(開発者のための仕組み):図3 - 元の文字列とエンコードされた文字列を示すコンソール出力

IronPDF: C# PDFライブラリ

C# URL Encode (How It Works For Developers):図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");
    }
}
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");
    }
}
$vbLabelText   $csharpLabel

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

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

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

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

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}");
    }
}
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}");
    }
}
$vbLabelText   $csharpLabel

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 Encode (How It Works For Developers):図7 - IronPDFライセンスページ.

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

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

よくある質問

C#でURLをエンコードするにはどうすればいいですか?

C#では、HttpUtility.UrlEncodeUri.EscapeDataStringのようなメソッドを使用してURLをエンコードできます。これらのメソッドは、文字をパーセントエンコード形式に変換し、インターネット上での安全な送信を確保します。

URLエンコードとデコードの違いは何ですか?

URLエンコードは、特別な文字をパーセントエンコード形式に変換して、安全なデータ伝送をURLで確保します。一方、デコードはこれらのエンコードされた文字を元の形式に変換して、正確なデータ解釈を行います。

C#でURLからPDFを作成するにはどうすればいいですか?

C#でIronPDFを使用してURLをPDFに変換することができます。IronPDFは、ウェブページの内容を直接キャプチャしてPDFドキュメントに変換し、正確なウェブリクエストのためのURLエンコード技術を統合します。

ウェブアプリケーションでURLエンコードが重要なのはなぜですか?

URLエンコードは、ウェブアプリケーションでデータがURLに含まれて安全かつエラーなく送信されるようにするために重要です。安全でない文字をパーセントエンコード形式に置き換えることで、潜在的なデータ破損やセキュリティ問題を防ぎます。

C#でのPDF生成をどのようにURLエンコードで強化できますか?

PDFを生成する前にURLエンコードを適用することで、ドキュメントに含まれるURLが正しく形式化され安全に送信されるようにすることができます。IronPDFのようなライブラリは、その後、ウェブコンテンツをPDFに変換するときにこれらのURLを正確に処理できます。

C#でのURLデコードのための方法は何ですか?

C#はHttpUtility.UrlDecodeUri.UnescapeDataStringのような方法を提供しています。これらのメソッドはエンコードプロセスを逆にし、パーセントエンコードされた文字を元の形式に戻します。

URLエンコードはAPI呼び出しをどのように助けますか?

URLエンコードは、クエリパラメータ内の特別な文字が安全に送信されることを確保し、API呼び出し中のエラーを防ぎます。これはウェブアプリケーションでクライアントとサーバー間でデータを確実に渡すために不可欠です。

IronPDFは、PDFを生成するときにURLエンコードを自動的に処理できますか?

はい、IronPDFはウェブページをPDFに変換するときにURLエンコードを自動で処理できます。PDF生成プロセス中にURLが正しく形式化され、処理されることを保証し、ウェブコンテンツとのシームレスな統合を提供します。

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

Jacob Mellorは、Iron Softwareの最高技術責任者であり、C# PDF技術の開拓者としてその先進的な役割を担っています。Iron Softwareのコアコードベースのオリジナルデベロッパーである彼は、創業時から製品のアーキテクチャを形作り、CEOのCameron Rimingtonと協力してNASA、Tesla、全世界の政府機関を含む50人以上の会社に成長させました。

Jacobは、1998年から2001年にかけてマンチェスター大学で土木工学の第一級優等学士号(BEng)を取得しました。1999年にロンドンで最初のソフトウェアビジネスを立ち上げ、2005年には最初の.NETコンポーネントを作成し、Microsoftエコシステムにおける複雑な問題の解決を専門にしました。

彼の旗艦製品であるIronPDFとIronSuite .NETライブラリは、全世界で3000万以上のNuGetインストールを達成しており、彼の基本コードが世界中で使用されている開発者ツールを支えています。商業的な経験を25年間積み、コードを書くことを41年間続けるJacobは、企業向けのC#、Java、およびPython PDF技術の革新を推進し続け、次世代の技術リーダーを指導しています。