
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.WebとSystem.Net名前空間内にあり、開発者にURLエンコード方法の柔軟性を提供します。 以下は、利用可能な方法の簡単な概要です:
- **HttpUtility.UrlEncode メソッド (System.Web):**これは、Web アプリケーションでの URL エンコードにおそらく最もよく使用される方法です。 文字をパーセントエンコード形式に変換し、文字列をURL上で安全に送信できるようにします。 ASP.NETプロジェクトでは、クエリー文字列やフォームパラメーターのエンコードに特に役立ちます。
- HttpUtility.UrlPathEncode メソッド (System.Web): UrlEncodeとは異なり、 UrlPathEncode はクエリ文字列をそのまま残し、URL のパス部分をエンコードするために特別に設計されています。 この方法では、URL全体をエンコードするのではなく、パス部分をエンコードするため、URLの階層構造が保たれることに注意することが重要です。
- Uri.EscapeUriString メソッド (システム):このメソッドは、URI 文字列をエスケープし、URI で許可されていないすべての文字をパーセントエンコードされた文字に変換します。 ただし、スラッシュ(/)やクエスチョンマーク(?
- **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);
}
}Imports System
Imports System.Web
Module Program
Sub Main()
Dim originalPath As String = "/api/search/Hello World!"
Dim encodedPath As String = UrlEncode(originalPath)
Console.WriteLine("Original Path: " & originalPath)
Console.WriteLine("Encoded Path: " & encodedPath)
End Sub
Public Function UrlEncode(originalString As String) As String
Return HttpUtility.UrlEncode(originalString)
End Function
End Module名前空間の包含: System.Web名前空間がコードの先頭に包含されます。
元の文字列: URL で安全に送信するためにエンコードする文字を含む文字列変数originalStringを定義します。 これには、エンコードせずにURLに含めると問題を引き起こす可能性のあるスペースや句読点が含まれます。
エンコーディング: HttpUtility.UrlEncodeメソッドは、 originalStringを引数として呼び出されます。 このメソッドは文字列を処理し、安全でない文字をパーセントエンコードされた同等の文字に置き換えた新しい文字列を返します。 例えば、スペースは**%20**に置き換えられます。
**出力:**最後に、プログラムは元の文字列とエンコードされた文字列の両方をコンソールに出力します。

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);
}
}Imports System
Imports System.Web
Module Program
Sub Main()
' Define the original URL path, which includes spaces.
Dim originalPath As String = "/api/search/Hello World!"
' Use the HttpUtility.UrlPathEncode method to encode the path.
Dim encodedPath As String = HttpUtility.UrlPathEncode(originalPath)
' Output the original and encoded paths to the console.
Console.WriteLine("Original Path: " & originalPath)
Console.WriteLine("Encoded Path: " & encodedPath)
End Sub
End Module**URLエンコードにおける文字エンティティの等価物:**このプロセスは、URLパスの文字列値を変換し、ウェブの互換性のためにスペースを文字エンティティの等価物(%20)に変換します。 URLには実際のスペースを含めることができないため、これは非常に重要です。
文字列値とURL文字列の処理: originalPath変数の文字列値は"/api/search/Hello World!"であり、これはスペースを含んでいるためにエンコードを必要とするURL文字列の典型的な例です。
この例では、メソッドのオーバーロードなしで HttpUtility.UrlPathEncode の特定のバージョンを使用していますが、URL パスをエンコードするためのメソッドの設計意図に注意することが重要です。 開発者は、メソッドのオーバーロードが存在する場合、メソッドを使用する別の方法を提供するため、多くの場合、異なるタイプの入力を受け入れるか、または追加の機能を提供するメソッドのオーバーロードに注意する必要があります。
**エンコーディングオブジェクトと文字列URLの変換:**このコンテキストにおけるエンコーディングオブジェクトは、文字列URLを受け取り、そのエンコードされたフォームを返すHttpUtility.UrlPathEncodeメソッドの操作に暗黙的に含まれています。 この方法では、特殊文字を適切な表現にエンコードしながらも、URLパスの構造が損なわれないようにします。
エンコードされたパスの出力: このプログラムは、元のパスからエンコードされたパスへの変換を示します。 これは、文字列URLをウェブ送信用にエンコードする直接的な例で、スペースやその他の特殊文字が引き起こす可能性のある問題に対処しています。

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);
}
}Imports System
Module Program
Sub Main()
Dim originalUri As String = "https://example.com/search?query=Hello World!"
Dim escapedUri As String = Uri.EscapeUriString(originalUri)
Console.WriteLine("Original URI: " & originalUri)
Console.WriteLine("Escaped URI: " & escapedUri)
End Sub
End Module元の URI: originalUri変数は、スペースと特殊文字を含むクエリ文字列を含む完全な URI を表す文字列で初期化されます。 URIがウェブブラウザやサーバによって正しく処理されるように、これらの特殊文字は"エスケープ"する必要があります。
URI のエスケープ: Uri.EscapeUriStringメソッドが、 originalUriを引数として呼び出されます。 このメソッドは、URI文字列をスキャンし、URIで許可されていない文字や曖昧さを引き起こす可能性のある文字をエスケープします。
**出力:**プログラムは元の URI とエスケープされた URI の両方をコンソールに出力します。

IronPDF: C# PDFライブラリ

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");
}
}Imports IronPdf
Friend Class Program
Shared Sub Main(ByVal args() As String)
Dim renderer = New ChromePdfRenderer()
' 1. Convert HTML String to PDF
Dim htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"
Dim pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent)
pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf")
' 2. Convert HTML File to PDF
Dim htmlFilePath = "path_to_your_html_file.html" ' Specify the path to your HTML file
Dim pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath)
pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf")
' 3. Convert URL to PDF
Dim url = "http://ironpdf.com" ' Specify the URL
Dim pdfFromUrl = renderer.RenderUrlAsPdf(url)
pdfFromUrl.SaveAs("URLToPDF.pdf")
End Sub
End ClassURLエンコードによる動作コード例
次の例では、ウェブページからPDFを生成するためにURLエンコーディングと組み合わせてIronPDFを使用する方法を説明します。 このシナリオでは、Webリクエスト用に正しくフォーマットされたURLをエンコードし、IronPDFを使ってそのURLのコンテンツをPDFドキュメントに変換します。
IronPDFライブラリをインストールする
まず、プロジェクトにIronPDFがインストールされていることを確認してください。 NuGetパッケージマネージャを使用している場合は、実行することでインストールできます:
コード例
それでは、コードに飛び込んでみましょう:
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}");
}
}Imports System.Web
Imports IronPdf
Class Program
Shared Sub Main(ByVal args As String())
License.LicenseKey = "License-Key" ' Set your IronPDF license key
Dim baseUrl As String = "https://example.com/search"
' The query parameter with spaces that needs to be encoded
Dim query As String = "Hello World!"
' Encoding the query parameter to ensure the URL is correctly formatted
Dim encodedQuery As String = HttpUtility.UrlEncode(query)
' Constructing the full URL with the encoded query parameter
Dim fullUrl As String = $"{baseUrl}?query={encodedQuery}"
' Initialize the IronPDF HtmlToPdf renderer
Dim renderer = New ChromePdfRenderer()
' Convert the web page at the encoded URL to a PDF document
Dim pdf = renderer.RenderUrlAsPdf(fullUrl)
' Save the PDF to a file
Dim filePath As String = "webpage.pdf"
pdf.SaveAs(filePath)
Console.WriteLine($"PDF successfully created from: {fullUrl}")
Console.WriteLine($"Saved to: {filePath}")
End Sub
End Class
コードの説明
この例は、ベースURLとスペースを含むクエリー文字列から始まります。 クエリ文字列は、HttpUtility.UrlEncodeを使用してエンコードされ、URLで安全に送信されます。 クエリをエンコードした後、ベースURLに追加して、アクセスされる完全なURLを形成します。
エンコードされたURLの準備ができたら、IronPDFのChromePdfRendererを使ってURLのウェブページを取得し、PDFドキュメントに変換します。 これは、ChromePdfRendererクラスのインスタンスを作成し、エンコードされたURLでRenderUrlAsPdfを呼び出すことを含みます。 最後に、生成されたPDFはSaveAsメソッドを使用してファイルに保存されます。 出来上がったファイルは、エンコードされたURLからアクセスできる、ウェブページコンテンツのPDFドキュメントです。 こちらが出力されたPDFファイルです:

結論
最後に、C#はURLエンコードとデコードのための強力な機能を提供し、データをインターネット上で安全かつ効率的に送信できるようにします。 System.WebおよびSystem.Net名前空間内の組み込みメソッドを通じて、開発者は特殊文字の問題を防ぐためにURLをエンコードし、正確なデータ解釈のために元の形式にデコードすることができます。
IronPDFトライアルライセンスを検討されている方には、その機能を直接評価する機会を提供します。 IronPDFをプロジェクトに統合することを決定した場合、$999からライセンスが始まり、.NETフレームワーク内でのPDF操作ニーズを満たすための包括的な機能スイートを提供します。

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


