SJISでURLエンコードする

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つ配置します。
SJISでURLエンコードする:画像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)い結果を表示します。

実行結果

プロジェクトを実行します。下図のウィンドウが表示されます。
SJISでURLエンコードする:画像2

上部のテキストボックスに文字列を入力します。
SJISでURLエンコードする:画像3

入力後、[button1]をクリックします。下部のテキストボックスに、URLエンコードされた結果が表示されます。
SJISでURLエンコードする:画像4

下図は、HttpUtility.UrlEncode() で第二引数を与えなかった場合の結果です。マルチバイト文字はUTF-8でURLエンコードされた結果になることが確認できます。
SJISでURLエンコードする:画像5

Shift-JISでのURLエンコードができました。

AuthorPortraitAlt
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
作成日: 2009-08-28
Copyright © 1995–2025 iPentec all rights reserverd.