SJISでURLエンコードする - C#

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
iPentec all rights reserverd.