C#のプログラムで、SJISでURLエンコードするコードを紹介します。
概要
文字列をSJIS(Shift JIS)でURLエンコードするコードを紹介します。
こちらの記事ではC#でのURLエンコードのコードを紹介しましたが、マルチバイト文字列はUnicodeでエンコードされます。
利用状況によっては文字列の文字コードをSJISにして、URLエンコードしたい場合があります。この記事では文字列をSJISでエンコードするコードを紹介します。
書式
HttpUtility.UrlEncode( [変換する文字列], System.Text.Encoding.GetEncoding("Shift-JIS") )
変換結果はEncodeメソッドの戻り値で返ります。
コード例
下記のコードでSJISにエンコードします。
string str = "あいうえお";
string param = HttpUtility.UrlEncode(str, System.Text.Encoding.GetEncoding("Shift-JIS"));
下記のコードの場合、通常のURLエンコードではUTF-8として変換されます。
string str = "あいうえお";
string param = HttpUtility.UrlEncode(str);
プログラム例
Windows Formアプリケーションを作成します。
UI
下図のフォームを作成します。テキストボックスを2つ、ボタンを1つ配置します。
コード
以下のコードを記述します。ボタンのClick イベントを実装しています。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Web;
namespace URLEncodeSjisDemo
{
public partial class FormMain : Form
{
public FormMain()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
textBox2.Text = HttpUtility.UrlEncode(textBox1.Text, System.Text.Encoding.GetEncoding("Shift-JIS"));
}
}
}
解説
エンコーディングを指定して、URLエンコードをする場合は、
HttpUtility.UrlEncode()
メソッドの第二引数に、変換するEncoding オブジェクトを与えます。
今回はShift-JISでのエンコードのため、
GetEncoding("Shift-JIS")
により、SHift-JISのEncodingオブジェクトを取得しています。
上部のテキストボックス(textBox1) に入力された文字列をURLエンコードし、下部のテキストボックス(textBox2)い結果を表示します。
実行結果
プロジェクトを実行します。下図のウィンドウが表示されます。
上部のテキストボックスに文字列を入力します。
入力後、[button1]をクリックします。下部のテキストボックスに、URLエンコードされた結果が表示されます。
下図は、
HttpUtility.UrlEncode()
で第二引数を与えなかった場合の結果です。マルチバイト文字はUTF-8でURLエンコードされた結果になることが確認できます。
Shift-JISでのURLエンコードができました。
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
最終更新日: 2024-04-30
作成日: 2009-08-28