プログラミング逆引き辞典

~ 多言語対応のプログラミングレシピ ~

C# 文字列をUnicodeに変換

■事前準備

.NET FrameworkのWebアプリケーション(MVC)を作成する
 
 

■サンプルソース


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.Mvc;

namespace UnicodeGenerator.Controllers
{
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            //Unicode変換用のインスタンス
            //第一引数 true:ビッグエンディアン false:リトルエンディアン
            //第二引数 BOM(Byte Order Mark)の付加有無
            UnicodeEncoding unicodeEnc = new UnicodeEncoding(true, false);

            //変換前文字列
            string str = "北森齌";

            //変換中の一時的な文字列
            string tempStr = "";

            //変換後のUnicode
            string unicode = "";

            //変換前文字列を1文字ずつUnicodeに変換する処理
            foreach (char _char in str)
            {
                //変換前文字列の1文字ごとのUnicodeエスケープシーケンス
                char[] charArray = new char[1] { _char };

                //Unicodeのバイト列
                byte[] encodedBytes = unicodeEnc.GetBytes(charArray);

                //Unicodeの最初に「U+」を付与
                tempStr += "U+";

                //Unicodeのバイト列を16進法に変換する処理
                foreach (byte _byte in encodedBytes)
                {
                    //0詰めをせずに2桁の16進法でアルファベットを大文字に変換
                    tempStr += string.Format("{0:X2}", _byte);
                }

                //Unicode間にカンマで区切る為に変換したUnicodeの最後にカンマを付与
                tempStr += ",";
            }

            //変換後のUnicodeが存在する場合は最後の余分なカンマを削除
            if (tempStr.EndsWith(","))
            {
                //余分なカンマを削除
                unicode = tempStr.TrimEnd(',');
            } else
            {
                unicode = tempStr;
            }

            ViewBag.result = unicode;

            return View();
        }
    }
}