この記事について
この記事は、生成AIを活用した自動生成フローで作成しています。.NETのUriBuilderとUri.EscapeDataString仕様を確認し、URLを文字列連結で作らないTIPSとして整理しています。検証ステータス:📘 公式API確認済み・PowerShellサンプル実装済み・実機未確認
URLを文字列連結で作らない ― PowerShell + UriBuilderで日本語クエリも安全に組み立てる
API URLを作るとき、"?q=" + $keyword + "&page=" + $page と文字列連結だけで済ませると、日本語、空白、&、= などが混ざった瞬間に壊れやすくなります。
PowerShellから.NETの UriBuilder と Uri.EscapeDataString を使うと、処理の役割を分けられます。
例: 「東京 駅」を検索パラメータにする
# [ordered]は、キーの並び順を保つハッシュテーブルです。
# URLのログを毎回同じ順で見やすくするために使っています。
$params = [ordered]@{
q = "東京 駅"
page = 2
}
# キーと値を1件ずつURLエンコードします。
# URL全体ではなく、データ部分だけをEscapeDataStringへ渡すのがポイントです。
$query = (
$params.GetEnumerator() | ForEach-Object {
$key = [Uri]::EscapeDataString([string]$_.Key)
$value = [Uri]::EscapeDataString([string]$_.Value)
"$key=$value"
}
) -join "&"
# UriBuilderはURLを構造として組み立てる.NETクラスです。
$builder = New-Object System.UriBuilder("https://example.com/search")
$builder.Query = $query
# 完成した絶対URLを表示します。
$builder.Uri.AbsoluteUri
日本語や空白はURLで扱える形へエスケープされます。
EscapeDataStringは「値」に使う
URL全体を丸ごとエスケープするのではなく、クエリのキーや値単位で処理します。https:// や / まで変換してしまうと、URL構造そのものが壊れます。
flowchart LR
A[Base URL] --> C[UriBuilder]
B[query values] --> D[EscapeDataString]
D --> C
C --> E[完成URL]
何に使える?
REST API呼び出し
検索URL生成
日本語ファイル名を含むURL
パラメータ付きリンクの一括生成
短いコードですが、「文字列を雑につなぐ」より一段安全な実装になります。

コメント