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

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

C# サロゲートペアや異体字の文字変換

C#でサロゲートペアや異体字をUnicodeに変換する方法

// 辻の異体字(しんにょう1つ)
var str = "辻󠄀";

for (var i = 0; i < str.Length; i += (char.IsSurrogate(str, i) ? 2 : 1))
{
    // 10進数に変換
    var num10 = char.ConvertToUtf32(str, i);

    // 16進数に変換
    var num16 = num10.ToString("X");

    // 頭に「U+」を付与するとUnicode
    var unicode = "U+" + num16;

    // IVS部分を考慮して連結
    sb.Append(unicode);
}

// 変換後のUnicode
Console.WriteLine(sb);